linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
@ 2008-10-25  8:54 Shaddy Baddah
  2008-10-25  9:17 ` Johannes Berg
  2008-10-25 11:21 ` Sebastian Andrzej Siewior
  0 siblings, 2 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-10-25  8:54 UTC (permalink / raw)
  To: linux-wireless

[-- Attachment #1: Type: text/plain, Size: 2020 bytes --]

Hi,

You may remember I reported a similar problem almost a year ago:

http://marc.info/?l=linux-wireless&m=119543627712471&w=2

I've never given up hope that the issues could be worked through. So 
I've made a fresh attempt at getting the zd1211rw working under 
sparc64-linux.

As per the previously employed strategy, I have successfully built a 
2.6.26 kernel for sparc64, by taking the configuration for the Debian 
build of this kernel, and additionally configuring the zd1211rw driver. 
I have attached the .config. Note, thinking it might be usefully, I 
enabled CONFIG_ZD1211RW_DEBUG just in case.

I am successfully able to modprobe the driver (in fact, I think it is 
being probed during the boot, as whatever magic effects this kicks in). 
Here is the dmesg output:

[   57.840661] zd1211rw usb_init()
[   57.840933] usb 4-3: print_id() 6891:a727 v4330 high
[   57.950264] usb 4-3: reset high speed USB device using ehci_hcd and 
address 2
[   58.195856] zd1211rw 4-3:1.0: zd_chip_read_mac_addr_fw()
[   58.198901] phy0: Selected rate control algorithm 'pid'
[   58.854432] zd1211rw 4-3:1.0: probe() successful
[   58.854451] zd1211rw 4-3:1.0: phy0
[   58.902168] usbcore: registered new interface driver zd1211rw
[   58.978077] zd1211rw initialized

At this point, I have not touched a wireless-tools tool, and to be sure 
that the problems are not sourced from them, I do not use them.

Instead, I attempt to bring up the interface, by doing:

$ sudo ifconfig wlan0 up

Immediately after executing this command, I start getting console 
messages that report the problems I am reporting in this email. I have 
executed a dmesg, and copied the relevant lines into a separate file 
attached as dmesg.txt (as this may be too big to inline here). Please 
note, a message like:

[  282.300681] Kernel unaligned access at TPC[10129b68] 
zd_mac_rx+0x144/0x32c [zd1211rw]

periodically is reported even after the ifconfig command completes 
(seemingly successfully).

Thanks in advance for your assistance,
Shaddy


[-- Attachment #2: .config --]
[-- Type: text/plain, Size: 57332 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.26-custom
# Fri Oct 24 01:14:19 2008
#
CONFIG_SPARC=y
CONFIG_SPARC64=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_64BIT=y
CONFIG_MMU=y
CONFIG_IOMMU_HELPER=y
CONFIG_QUICKLIST=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_AUDIT_ARCH=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_ARCH_NO_VIRT_TO_BUS=y
CONFIG_OF=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_SPARC64_PAGE_SIZE_8KB=y
# CONFIG_SPARC64_PAGE_SIZE_64KB is not set
# CONFIG_SPARC64_PAGE_SIZE_512KB is not set
# CONFIG_SPARC64_PAGE_SIZE_4MB is not set
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_SCHED_HRTICK is not set
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASK_XACCT=y
CONFIG_TASK_IO_ACCOUNTING=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_TREE=y
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=14
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_NS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_RT_GROUP_SCHED is not set
# CONFIG_USER_SCHED is not set
CONFIG_CGROUP_SCHED=y
CONFIG_CGROUP_CPUACCT=y
# CONFIG_RESOURCE_COUNTERS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_SYSCTL_SYSCALL_CHECK=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
# CONFIG_COMPAT_BRK is not set
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
CONFIG_PROFILING=y
# CONFIG_MARKERS is not set
# CONFIG_OPROFILE is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
# CONFIG_HAVE_DMA_ATTRS is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_IO_TRACE=y
CONFIG_BLK_DEV_BSG=y
CONFIG_BLOCK_COMPAT=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_CLASSIC_RCU=y
CONFIG_GENERIC_HARDIRQS=y

#
# General machine setup
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP is not set
# CONFIG_CPU_FREQ is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_HUGETLB_PAGE_SIZE_4MB=y
# CONFIG_HUGETLB_PAGE_SIZE_512K is not set
# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
# CONFIG_NUMA is not set
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=0
CONFIG_NR_QUICK=1
CONFIG_SBUS=y
CONFIG_SBUSCHAR=y
CONFIG_SUN_AUXIO=y
CONFIG_SUN_IO=y
# CONFIG_SUN_LDOMS is not set
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PCI_SYSCALL=y
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
CONFIG_PCI_LEGACY=y
# CONFIG_PCI_DEBUG is not set
CONFIG_SUN_OPENPROMFS=m

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_COMPAT_BINFMT_ELF=y
CONFIG_BINFMT_MISC=m
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
# CONFIG_CMDLINE_BOOL is not set

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=m
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_XFRM_STATISTICS is not set
CONFIG_NET_KEY=m
# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
CONFIG_IP_PNP_RARP=y
CONFIG_NET_IPIP=m
# CONFIG_NET_IPGRE is not set
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_ARPD=y
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_XFRM_TUNNEL=m
CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
CONFIG_INET_LRO=m
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
# CONFIG_DEFAULT_BIC is not set
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_TCP_MD5SIG=y
CONFIG_IP_VS=m
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y

#
# IPVS scheduler
#
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m

#
# IPVS application helper
#
CONFIG_IP_VS_FTP=m
CONFIG_IPV6=m
CONFIG_IPV6_PRIVACY=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_MIP6=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
CONFIG_INET6_XFRM_MODE_TUNNEL=m
CONFIG_INET6_XFRM_MODE_BEET=m
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
CONFIG_IPV6_SIT=m
CONFIG_IPV6_NDISC_NODETYPE=y
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_MULTIPLE_TABLES=y
CONFIG_IPV6_SUBTREES=y
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_PIMSM_V2=y
# CONFIG_NETLABEL is not set
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CT_ACCT=y
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CT_PROTO_DCCP=m
CONFIG_NF_CT_PROTO_GRE=m
CONFIG_NF_CT_PROTO_SCTP=m
CONFIG_NF_CT_PROTO_UDPLITE=m
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
CONFIG_NETFILTER_XT_TARGET_RATEEST=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m

#
# IP: Netfilter Configuration
#
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_DCCP=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PROTO_UDPLITE=m
CONFIG_NF_NAT_PROTO_SCTP=m
CONFIG_NF_NAT_FTP=m
CONFIG_NF_NAT_IRC=m
CONFIG_NF_NAT_TFTP=m
CONFIG_NF_NAT_AMANDA=m
CONFIG_NF_NAT_PPTP=m
CONFIG_NF_NAT_H323=m
CONFIG_NF_NAT_SIP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

#
# IPv6: Netfilter Configuration
#
CONFIG_NF_CONNTRACK_IPV6=m
CONFIG_IP6_NF_QUEUE=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_LOG=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_RAW=m

#
# DECnet: Netfilter Configuration
#
# CONFIG_DECNET_NF_GRABULATOR is not set

#
# Bridge: Netfilter Configuration
#
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_BROUTE=m
CONFIG_BRIDGE_EBT_T_FILTER=m
CONFIG_BRIDGE_EBT_T_NAT=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
CONFIG_BRIDGE_EBT_ULOG=m
CONFIG_BRIDGE_EBT_NFLOG=m
CONFIG_IP_DCCP=m
CONFIG_INET_DCCP_DIAG=m
CONFIG_IP_DCCP_ACKVEC=y

#
# DCCP CCIDs Configuration (EXPERIMENTAL)
#
CONFIG_IP_DCCP_CCID2=m
# CONFIG_IP_DCCP_CCID2_DEBUG is not set
CONFIG_IP_DCCP_CCID3=m
# CONFIG_IP_DCCP_CCID3_DEBUG is not set
CONFIG_IP_DCCP_CCID3_RTO=100
CONFIG_IP_DCCP_TFRC_LIB=m

#
# DCCP Kernel Hacking
#
# CONFIG_IP_DCCP_DEBUG is not set
CONFIG_IP_SCTP=m
# CONFIG_SCTP_DBG_MSG is not set
# CONFIG_SCTP_DBG_OBJCNT is not set
# CONFIG_SCTP_HMAC_NONE is not set
# CONFIG_SCTP_HMAC_SHA1 is not set
CONFIG_SCTP_HMAC_MD5=y
CONFIG_TIPC=m
CONFIG_TIPC_ADVANCED=y
CONFIG_TIPC_ZONES=3
CONFIG_TIPC_CLUSTERS=1
CONFIG_TIPC_NODES=255
CONFIG_TIPC_SLAVE_NODES=0
CONFIG_TIPC_PORTS=8191
CONFIG_TIPC_LOG=0
# CONFIG_TIPC_DEBUG is not set
# CONFIG_ATM is not set
CONFIG_BRIDGE=m
CONFIG_VLAN_8021Q=m
CONFIG_DECNET=m
CONFIG_DECNET_ROUTER=y
CONFIG_LLC=m
CONFIG_LLC2=m
CONFIG_IPX=m
# CONFIG_IPX_INTERN is not set
CONFIG_ATALK=m
# CONFIG_DEV_APPLETALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
CONFIG_NET_SCHED=y

#
# Queueing/Scheduling
#
CONFIG_NET_SCH_CBQ=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_DSMARK=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m

#
# Classification
#
CONFIG_NET_CLS=y
CONFIG_NET_CLS_BASIC=m
CONFIG_NET_CLS_TCINDEX=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
CONFIG_NET_CLS_RSVP=m
CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
CONFIG_NET_EMATCH_NBYTE=m
CONFIG_NET_EMATCH_U32=m
CONFIG_NET_EMATCH_META=m
CONFIG_NET_EMATCH_TEXT=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=m
CONFIG_NET_ACT_GACT=m
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_IPT=m
CONFIG_NET_ACT_NAT=m
CONFIG_NET_ACT_PEDIT=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_CLS_IND=y
CONFIG_NET_SCH_FIFO=y

#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_HAMRADIO is not set
CONFIG_CAN=m
CONFIG_CAN_RAW=m
CONFIG_CAN_BCM=m

#
# CAN Device Drivers
#
CONFIG_CAN_VCAN=m
# CONFIG_CAN_DEBUG_DEVICES is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_AF_RXRPC=m
# CONFIG_AF_RXRPC_DEBUG is not set
CONFIG_RXKAD=m
CONFIG_FIB_RULES=y

#
# Wireless
#
CONFIG_CFG80211=m
CONFIG_NL80211=y
CONFIG_WIRELESS_EXT=y
CONFIG_MAC80211=m

#
# Rate control algorithm selection
#
CONFIG_MAC80211_RC_DEFAULT_PID=y
# CONFIG_MAC80211_RC_DEFAULT_NONE is not set

#
# Selecting 'y' for an algorithm will
#

#
# build the algorithm into mac80211.
#
CONFIG_MAC80211_RC_DEFAULT="pid"
CONFIG_MAC80211_RC_PID=y
CONFIG_MAC80211_MESH=y
CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
# CONFIG_MAC80211_DEBUG is not set
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=m
CONFIG_IEEE80211_CRYPT_CCMP=m
CONFIG_IEEE80211_CRYPT_TKIP=m
CONFIG_RFKILL=m
CONFIG_RFKILL_INPUT=m
CONFIG_RFKILL_LEDS=y
CONFIG_NET_9P=m
# CONFIG_NET_9P_DEBUG is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=m
# CONFIG_MTD is not set
CONFIG_OF_DEVICE=y
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
CONFIG_PARPORT_SUNBPP=m
CONFIG_PARPORT_AX88796=m
CONFIG_PARPORT_1284=y
CONFIG_PARPORT_NOT_PC=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=y
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_SX8=m
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
# CONFIG_BLK_DEV_XIP is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
CONFIG_ATA_OVER_ETH=m
CONFIG_MISC_DEVICES=y
# CONFIG_PHANTOM is not set
CONFIG_EEPROM_93CX6=m
CONFIG_SGI_IOC4=m
CONFIG_TIFM_CORE=m
CONFIG_TIFM_7XX1=m
CONFIG_ENCLOSURE_SERVICES=m
CONFIG_HAVE_IDE=y
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_BLK_DEV_IDEDISK=m
# CONFIG_IDEDISK_MULTI_MODE is not set
CONFIG_BLK_DEV_IDECD=m
CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
CONFIG_BLK_DEV_IDETAPE=m
CONFIG_BLK_DEV_IDEFLOPPY=m
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set
CONFIG_IDE_PROC_FS=y

#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_PLATFORM is not set
CONFIG_BLK_DEV_IDEDMA_SFF=y

#
# PCI IDE chipsets support
#
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=m
# CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_AEC62XX is not set
CONFIG_BLK_DEV_ALI15X3=m
# CONFIG_BLK_DEV_AMD74XX is not set
CONFIG_BLK_DEV_CMD64X=m
# CONFIG_BLK_DEV_TRIFLEX is not set
CONFIG_BLK_DEV_CY82C693=m
CONFIG_BLK_DEV_CS5520=m
CONFIG_BLK_DEV_CS5530=m
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
CONFIG_BLK_DEV_JMICRON=m
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
CONFIG_BLK_DEV_IT8213=m
CONFIG_BLK_DEV_IT821X=m
CONFIG_BLK_DEV_NS87415=m
CONFIG_BLK_DEV_PDC202XX_OLD=m
CONFIG_BLK_DEV_PDC202XX_NEW=m
CONFIG_BLK_DEV_SVWKS=m
CONFIG_BLK_DEV_SIIMAGE=m
# CONFIG_BLK_DEV_SLC90E66 is not set
CONFIG_BLK_DEV_TRM290=m
CONFIG_BLK_DEV_VIA82CXXX=m
CONFIG_BLK_DEV_TC86C001=m
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_BLK_DEV_HD_ONLY is not set
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
CONFIG_RAID_ATTRS=m
CONFIG_SCSI=m
CONFIG_SCSI_DMA=y
CONFIG_SCSI_TGT=m
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=m
CONFIG_CHR_DEV_ST=m
CONFIG_CHR_DEV_OSST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_CHR_DEV_SCH=m
CONFIG_SCSI_ENCLOSURE=m

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=m
CONFIG_SCSI_FC_ATTRS=m
CONFIG_SCSI_FC_TGT_ATTRS=y
CONFIG_SCSI_ISCSI_ATTRS=m
CONFIG_SCSI_SAS_ATTRS=m
CONFIG_SCSI_SAS_LIBSAS=m
CONFIG_SCSI_SAS_ATA=y
CONFIG_SCSI_SAS_HOST_SMP=y
# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
CONFIG_SCSI_SRP_ATTRS=m
CONFIG_SCSI_SRP_TGT_ATTRS=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=m
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_3W_9XXX=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=15000
CONFIG_AIC7XXX_DEBUG_ENABLE=y
CONFIG_AIC7XXX_DEBUG_MASK=0
CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
CONFIG_SCSI_AIC7XXX_OLD=m
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=32
CONFIG_AIC79XX_RESET_DELAY_MS=15000
CONFIG_AIC79XX_DEBUG_ENABLE=y
CONFIG_AIC79XX_DEBUG_MASK=0
CONFIG_AIC79XX_REG_PRETTY_PRINT=y
CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
CONFIG_SCSI_ARCMSR=m
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
CONFIG_MEGARAID_LEGACY=m
CONFIG_MEGARAID_SAS=m
CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_DMX3191D=m
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_IPS is not set
CONFIG_SCSI_INITIO=m
# CONFIG_SCSI_INIA100 is not set
CONFIG_SCSI_PPA=m
CONFIG_SCSI_IMM=m
# CONFIG_SCSI_IZIP_EPP16 is not set
# CONFIG_SCSI_IZIP_SLOW_CTR is not set
CONFIG_SCSI_MVSAS=m
CONFIG_SCSI_STEX=m
CONFIG_SCSI_SYM53C8XX_2=m
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
CONFIG_SCSI_SYM53C8XX_MMIO=y
CONFIG_SCSI_IPR=m
# CONFIG_SCSI_IPR_TRACE is not set
# CONFIG_SCSI_IPR_DUMP is not set
CONFIG_SCSI_QLOGIC_1280=m
CONFIG_SCSI_QLA_FC=m
CONFIG_SCSI_QLA_ISCSI=m
CONFIG_SCSI_LPFC=m
CONFIG_SCSI_DC395x=m
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_DEBUG is not set
CONFIG_SCSI_SUNESP=m
CONFIG_SCSI_SRP=m
CONFIG_ATA=m
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_SATA_PMP=y
CONFIG_SATA_AHCI=m
CONFIG_SATA_SIL24=m
CONFIG_ATA_SFF=y
CONFIG_SATA_SVW=m
CONFIG_ATA_PIIX=m
CONFIG_SATA_MV=m
CONFIG_SATA_NV=m
CONFIG_PDC_ADMA=m
CONFIG_SATA_QSTOR=m
CONFIG_SATA_PROMISE=m
CONFIG_SATA_SX4=m
CONFIG_SATA_SIL=m
CONFIG_SATA_SIS=m
CONFIG_SATA_ULI=m
CONFIG_SATA_VIA=m
CONFIG_SATA_VITESSE=m
CONFIG_SATA_INIC162X=m
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
CONFIG_PATA_ARTOP=m
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
CONFIG_ATA_GENERIC=m
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_TRIFLEX is not set
CONFIG_PATA_MARVELL=m
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NINJA32 is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_NS87415 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not set
CONFIG_PATA_SIS_STUB=m
CONFIG_PATA_SIS=m
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set
CONFIG_PATA_SCH=m
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
CONFIG_MD_RAID5_RESHAPE=y
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m
CONFIG_DM_MULTIPATH_RDAC=m
CONFIG_DM_MULTIPATH_HP=m
CONFIG_DM_DELAY=m
CONFIG_DM_UEVENT=y
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
CONFIG_FUSION_SAS=m
CONFIG_FUSION_MAX_SGE=40
CONFIG_FUSION_CTL=m
CONFIG_FUSION_LAN=m
# CONFIG_FUSION_LOGGING is not set

#
# IEEE 1394 (FireWire) support
#

#
# Enable only one of the two stacks, unless you know what you are doing
#
# CONFIG_FIREWIRE is not set
CONFIG_IEEE1394=m
CONFIG_IEEE1394_OHCI1394=m
CONFIG_IEEE1394_PCILYNX=m
CONFIG_IEEE1394_SBP2=m
CONFIG_IEEE1394_ETH1394_ROM_ENTRY=y
CONFIG_IEEE1394_ETH1394=m
CONFIG_IEEE1394_RAWIO=m
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_DV1394=m
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
# CONFIG_I2O is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
CONFIG_IFB=m
CONFIG_DUMMY=m
CONFIG_BONDING=m
# CONFIG_MACVLAN is not set
CONFIG_EQUALIZER=m
CONFIG_TUN=m
CONFIG_VETH=m
# CONFIG_ARCNET is not set
CONFIG_PHYLIB=m

#
# MII PHY device drivers
#
CONFIG_MARVELL_PHY=m
CONFIG_DAVICOM_PHY=m
CONFIG_QSEMI_PHY=m
CONFIG_LXT_PHY=m
CONFIG_CICADA_PHY=m
CONFIG_VITESSE_PHY=m
CONFIG_SMSC_PHY=m
CONFIG_BROADCOM_PHY=m
CONFIG_ICPLUS_PHY=m
CONFIG_REALTEK_PHY=m
CONFIG_MDIO_BITBANG=m
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
CONFIG_SUNLANCE=m
CONFIG_HAPPYMEAL=m
CONFIG_SUNBMAC=m
CONFIG_SUNQE=m
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=m
CONFIG_TYPHOON=m
CONFIG_ENC28J60=m
# CONFIG_ENC28J60_WRITEVERIFY is not set
CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not set
CONFIG_TULIP=m
# CONFIG_TULIP_MWI is not set
# CONFIG_TULIP_MMIO is not set
CONFIG_TULIP_NAPI=y
CONFIG_TULIP_NAPI_HW_MITIGATION=y
# CONFIG_DE4X5 is not set
CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_ULI526X=m
# CONFIG_HP100 is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
CONFIG_NET_PCI=y
CONFIG_PCNET32=m
# CONFIG_AMD8111_ETH is not set
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_ADAPTEC_STARFIRE_NAPI=y
CONFIG_B44=m
CONFIG_B44_PCI_AUTOSELECT=y
CONFIG_B44_PCICORE_AUTOSELECT=y
CONFIG_B44_PCI=y
# CONFIG_FORCEDETH is not set
# CONFIG_EEPRO100 is not set
CONFIG_E100=m
CONFIG_FEALNX=m
CONFIG_NATSEMI=m
CONFIG_NE2K_PCI=m
# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_R6040=m
CONFIG_SIS900=m
CONFIG_EPIC100=m
CONFIG_SUNDANCE=m
CONFIG_SUNDANCE_MMIO=y
CONFIG_VIA_RHINE=m
# CONFIG_VIA_RHINE_MMIO is not set
CONFIG_VIA_RHINE_NAPI=y
CONFIG_SC92031=m
# CONFIG_NET_POCKET is not set
CONFIG_NETDEV_1000=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
CONFIG_DL2K=m
CONFIG_E1000=m
CONFIG_E1000_NAPI=y
# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
CONFIG_E1000E=m
CONFIG_E1000E_ENABLED=y
CONFIG_IP1000=m
CONFIG_IGB=m
CONFIG_NS83820=m
# CONFIG_HAMACHI is not set
CONFIG_YELLOWFIN=m
CONFIG_R8169=m
CONFIG_R8169_NAPI=y
# CONFIG_R8169_VLAN is not set
CONFIG_SIS190=m
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_VIA_VELOCITY=m
CONFIG_TIGON3=m
CONFIG_BNX2=m
CONFIG_QLA3XXX=m
CONFIG_ATL1=m
CONFIG_ATL1E=m
CONFIG_NETDEV_10000=y
CONFIG_CHELSIO_T1=m
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T1_NAPI=y
CONFIG_CHELSIO_T3=m
CONFIG_IXGBE=m
CONFIG_IXGB=m
CONFIG_IXGB_NAPI=y
CONFIG_S2IO=m
CONFIG_S2IO_NAPI=y
CONFIG_MYRI10GE=m
CONFIG_NETXEN_NIC=m
CONFIG_NIU=m
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
CONFIG_TEHUTI=m
CONFIG_SFC=m
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
CONFIG_WLAN_80211=y
# CONFIG_IPW2100 is not set
# CONFIG_IPW2200 is not set
# CONFIG_LIBERTAS is not set
# CONFIG_HERMES is not set
# CONFIG_ATMEL is not set
# CONFIG_USB_ATMEL is not set
# CONFIG_PRISM54 is not set
# CONFIG_USB_ZD1201 is not set
# CONFIG_USB_NET_RNDIS_WLAN is not set
# CONFIG_RTL8180 is not set
# CONFIG_RTL8187 is not set
# CONFIG_ADM8211 is not set
# CONFIG_P54_COMMON is not set
# CONFIG_ATH5K is not set
# CONFIG_IWLCORE is not set
# CONFIG_IWLWIFI_LEDS is not set
# CONFIG_IWL4965 is not set
# CONFIG_IWL3945 is not set
# CONFIG_HOSTAP is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
CONFIG_ZD1211RW=m
CONFIG_ZD1211RW_DEBUG=y
# CONFIG_RT2X00 is not set

#
# USB Network Adapters
#
CONFIG_USB_CATC=m
CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_USBNET=m
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_CDCETHER=m
CONFIG_USB_NET_DM9601=m
CONFIG_USB_NET_GL620A=m
CONFIG_USB_NET_NET1080=m
CONFIG_USB_NET_PLUSB=m
CONFIG_USB_NET_MCS7830=m
CONFIG_USB_NET_RNDIS_HOST=m
CONFIG_USB_NET_CDC_SUBSET=m
CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
CONFIG_USB_EPSON2888=y
CONFIG_USB_KC2190=y
CONFIG_USB_NET_ZAURUS=m
# CONFIG_WAN is not set
CONFIG_FDDI=y
# CONFIG_DEFXX is not set
CONFIG_SKFP=m
# CONFIG_HIPPI is not set
CONFIG_PLIP=m
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
CONFIG_PPP_MPPE=m
CONFIG_PPPOE=m
CONFIG_PPPOL2TP=m
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLHC=m
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
CONFIG_NET_FC=y
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=y
# CONFIG_INPUT_POLLDEV is not set

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=m
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_KEYBOARD_SUNKBD=y
CONFIG_KEYBOARD_LKKBD=m
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_KEYBOARD_STOWAWAY=m
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_SERIAL=y
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_SPARCSPKR=m
CONFIG_INPUT_ATI_REMOTE=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
# CONFIG_INPUT_UINPUT is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_NOZOMI=m

#
# Serial drivers
#

#
# Non-8250 serial port support
#
CONFIG_SERIAL_SUNCORE=y
CONFIG_SERIAL_SUNZILOG=y
CONFIG_SERIAL_SUNZILOG_CONSOLE=y
CONFIG_SERIAL_SUNSU=y
CONFIG_SERIAL_SUNSU_CONSOLE=y
CONFIG_SERIAL_SUNSAB=y
CONFIG_SERIAL_SUNSAB_CONSOLE=y
CONFIG_SERIAL_SUNHV=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_SERIAL_JSM=m
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=m
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_RAW_DRIVER is not set
CONFIG_TCG_TPM=m
CONFIG_TCG_NSC=m
CONFIG_TCG_ATMEL=m
CONFIG_DEVPORT=y
CONFIG_I2C=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=m
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_ALGOPCA=m

#
# I2C Hardware Bus support
#
# 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_I801 is not set
# CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
CONFIG_I2C_OCORES=m
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
CONFIG_I2C_SIMTEC=m
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
CONFIG_I2C_TAOS_EVM=m
# CONFIG_I2C_STUB is not set
CONFIG_I2C_TINY_USB=m
# CONFIG_I2C_VIA is not set
# CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set
CONFIG_I2C_PCA_PLATFORM=m

#
# Miscellaneous I2C Chip support
#
CONFIG_DS1682=m
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
CONFIG_PCF8575=m
# CONFIG_SENSORS_PCF8591 is not set
CONFIG_SENSORS_MAX6875=m
CONFIG_SENSORS_TSL2550=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y

#
# SPI Master Controller Drivers
#
CONFIG_SPI_BITBANG=m
CONFIG_SPI_BUTTERFLY=m
CONFIG_SPI_LM70_LLP=m

#
# SPI Protocol Masters
#
CONFIG_SPI_AT25=m
# CONFIG_SPI_SPIDEV is not set
CONFIG_SPI_TLE62X0=m
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
CONFIG_SENSORS_AD7418=m
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set
CONFIG_SENSORS_ADM1029=m
# CONFIG_SENSORS_ADM1031 is not set
CONFIG_SENSORS_ADM9240=m
CONFIG_SENSORS_ADT7470=m
CONFIG_SENSORS_ADT7473=m
CONFIG_SENSORS_ATXP1=m
# CONFIG_SENSORS_DS1621 is not set
CONFIG_SENSORS_I5K_AMB=m
# CONFIG_SENSORS_F71805F is not set
CONFIG_SENSORS_F71882FG=m
CONFIG_SENSORS_F75375S=m
# CONFIG_SENSORS_GL518SM is not set
# CONFIG_SENSORS_GL520SM is not set
# CONFIG_SENSORS_IT87 is not set
# CONFIG_SENSORS_LM63 is not set
CONFIG_SENSORS_LM70=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 is not set
# CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_LM92 is not set
CONFIG_SENSORS_LM93=m
# CONFIG_SENSORS_MAX1619 is not set
CONFIG_SENSORS_MAX6650=m
# CONFIG_SENSORS_PC87360 is not set
CONFIG_SENSORS_PC87427=m
# CONFIG_SENSORS_SIS5595 is not set
CONFIG_SENSORS_DME1737=m
# CONFIG_SENSORS_SMSC47M1 is not set
CONFIG_SENSORS_SMSC47M192=m
# CONFIG_SENSORS_SMSC47B397 is not set
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_THMC50=m
# CONFIG_SENSORS_VIA686A is not set
CONFIG_SENSORS_VT1211=m
CONFIG_SENSORS_VT8231=m
# CONFIG_SENSORS_W83781D is not set
CONFIG_SENSORS_W83791D=m
CONFIG_SENSORS_W83792D=m
CONFIG_SENSORS_W83793=m
# CONFIG_SENSORS_W83L785TS is not set
CONFIG_SENSORS_W83L786NG=m
# CONFIG_SENSORS_W83627HF is not set
CONFIG_SENSORS_W83627EHF=m
# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_THERMAL is not set
# CONFIG_THERMAL_HWMON is not set
# CONFIG_WATCHDOG is not set

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
CONFIG_SSB=m
CONFIG_SSB_SPROM=y
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
# CONFIG_SSB_B43_PCI_BRIDGE is not set
# CONFIG_SSB_DEBUG is not set
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y

#
# Multifunction device drivers
#
CONFIG_MFD_SM501=m
CONFIG_HTC_PASIC3=m

#
# Multimedia devices
#

#
# Multimedia core support
#
CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
# CONFIG_DVB_CORE is not set
CONFIG_VIDEO_MEDIA=m

#
# Multimedia drivers
#
CONFIG_MEDIA_ATTACH=y
CONFIG_MEDIA_TUNER=m
# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
CONFIG_MEDIA_TUNER_SIMPLE=m
CONFIG_MEDIA_TUNER_TDA8290=m
CONFIG_MEDIA_TUNER_TDA9887=m
CONFIG_MEDIA_TUNER_TEA5761=m
CONFIG_MEDIA_TUNER_TEA5767=m
CONFIG_MEDIA_TUNER_MT20XX=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L1=m
CONFIG_VIDEOBUF_GEN=m
CONFIG_VIDEOBUF_DMA_SG=m
CONFIG_VIDEOBUF_VMALLOC=m
CONFIG_VIDEO_BTCX=m
CONFIG_VIDEO_IR_I2C=m
CONFIG_VIDEO_IR=m
CONFIG_VIDEO_TVEEPROM=m
CONFIG_VIDEO_TUNER=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
CONFIG_VIDEO_TVAUDIO=m
CONFIG_VIDEO_TDA7432=m
CONFIG_VIDEO_TDA9875=m
CONFIG_VIDEO_MSP3400=m
CONFIG_VIDEO_CS53L32A=m
CONFIG_VIDEO_M52790=m
CONFIG_VIDEO_WM8775=m
CONFIG_VIDEO_WM8739=m
CONFIG_VIDEO_VP27SMPX=m
CONFIG_VIDEO_OV7670=m
CONFIG_VIDEO_SAA711X=m
CONFIG_VIDEO_SAA717X=m
CONFIG_VIDEO_TVP5150=m
CONFIG_VIDEO_CX25840=m
CONFIG_VIDEO_CX2341X=m
CONFIG_VIDEO_SAA7127=m
CONFIG_VIDEO_UPD64031A=m
CONFIG_VIDEO_UPD64083=m
CONFIG_VIDEO_BT848=m
CONFIG_VIDEO_SAA6588=m
# CONFIG_VIDEO_BWQCAM is not set
# CONFIG_VIDEO_CQCAM is not set
# CONFIG_VIDEO_W9966 is not set
# CONFIG_VIDEO_CPIA is not set
CONFIG_VIDEO_CPIA2=m
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
# CONFIG_VIDEO_MXB is not set
# CONFIG_VIDEO_DPC is not set
# CONFIG_VIDEO_HEXIUM_ORION is not set
# CONFIG_VIDEO_HEXIUM_GEMINI is not set
# CONFIG_VIDEO_CX88 is not set
CONFIG_VIDEO_IVTV=m
CONFIG_VIDEO_FB_IVTV=m
CONFIG_VIDEO_CAFE_CCIC=m
CONFIG_V4L_USB_DRIVERS=y
CONFIG_USB_VIDEO_CLASS=m
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
CONFIG_VIDEO_PVRUSB2=m
CONFIG_VIDEO_PVRUSB2_SYSFS=y
# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_USBVIDEO=m
# CONFIG_USB_VICAM is not set
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_KONICAWC is not set
CONFIG_USB_QUICKCAM_MESSENGER=m
CONFIG_USB_ET61X251=m
# CONFIG_VIDEO_OVCAMCHIP is not set
# CONFIG_USB_W9968CF is not set
# CONFIG_USB_OV511 is not set
# CONFIG_USB_SE401 is not set
# CONFIG_USB_SN9C102 is not set
# CONFIG_USB_STV680 is not set
CONFIG_USB_ZC0301=m
# CONFIG_USB_PWC is not set
CONFIG_USB_ZR364XX=m
CONFIG_USB_STKWEBCAM=m
CONFIG_SOC_CAMERA=m
CONFIG_SOC_CAMERA_MT9M001=m
CONFIG_SOC_CAMERA_MT9V022=m
CONFIG_RADIO_ADAPTERS=y
# CONFIG_RADIO_GEMTEK_PCI is not set
# CONFIG_RADIO_MAXIRADIO is not set
# CONFIG_RADIO_MAESTRO is not set
# CONFIG_USB_DSBR is not set
CONFIG_USB_SI470X=m
CONFIG_DAB=y
CONFIG_USB_DABUSB=m

#
# Graphics support
#
CONFIG_DRM=y
CONFIG_DRM_TDFX=m
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_MGA=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
CONFIG_VGASTATE=m
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
CONFIG_FB_SVGALIB=m
# CONFIG_FB_MACMODES is not set
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
CONFIG_FB_PM2=y
# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_UVESA is not set
CONFIG_FB_SBUS=y
# CONFIG_FB_BW2 is not set
# CONFIG_FB_CG3 is not set
CONFIG_FB_CG6=y
CONFIG_FB_FFB=y
# CONFIG_FB_TCX is not set
# CONFIG_FB_CG14 is not set
# CONFIG_FB_P9100 is not set
# CONFIG_FB_LEO is not set
# CONFIG_FB_XVR500 is not set
# CONFIG_FB_XVR2500 is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
CONFIG_FB_RADEON=y
# CONFIG_FB_RADEON_I2C is not set
CONFIG_FB_RADEON_BACKLIGHT=y
# CONFIG_FB_RADEON_DEBUG is not set
CONFIG_FB_ATY128=y
CONFIG_FB_ATY128_BACKLIGHT=y
CONFIG_FB_ATY=y
CONFIG_FB_ATY_CT=y
# CONFIG_FB_ATY_GENERIC_LCD is not set
CONFIG_FB_ATY_GX=y
CONFIG_FB_ATY_BACKLIGHT=y
CONFIG_FB_S3=m
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
CONFIG_FB_VT8623=m
# CONFIG_FB_TRIDENT is not set
CONFIG_FB_ARK=m
CONFIG_FB_PM3=m
CONFIG_FB_SM501=m
# CONFIG_FB_VIRTUAL is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_CORGI is not set

#
# Display device support
#
CONFIG_DISPLAY_SUPPORT=m

#
# Display hardware drivers
#

#
# Console display driver support
#
CONFIG_PROM_CONSOLE=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x16=y
CONFIG_FONT_SUN8x16=y
# CONFIG_FONT_SUN12x22 is not set
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
# CONFIG_LOGO_LINUX_CLUT224 is not set
CONFIG_LOGO_SUN_CLUT224=y

#
# Sound
#
CONFIG_SOUND=m

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_MPU401_UART=m
CONFIG_SND_OPL3_LIB=m
CONFIG_SND_AC97_CODEC=m
# CONFIG_SND_DUMMY is not set
CONFIG_SND_VIRMIDI=m
# CONFIG_SND_MTPAV is not set
CONFIG_SND_MTS64=m
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
CONFIG_SND_PORTMAN2X4=m

#
# PCI devices
#
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
CONFIG_SND_ALI5451=m
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AW2 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
CONFIG_SND_CMIPCI=m
CONFIG_SND_OXYGEN_LIB=m
CONFIG_SND_OXYGEN=m
# CONFIG_SND_CS4281 is not set
CONFIG_SND_DARLA20=m
CONFIG_SND_GINA20=m
CONFIG_SND_LAYLA20=m
CONFIG_SND_DARLA24=m
CONFIG_SND_GINA24=m
CONFIG_SND_LAYLA24=m
CONFIG_SND_MONA=m
CONFIG_SND_MIA=m
CONFIG_SND_ECHO3G=m
CONFIG_SND_INDIGO=m
CONFIG_SND_INDIGOIO=m
CONFIG_SND_INDIGODJ=m
CONFIG_SND_EMU10K1=m
# CONFIG_SND_EMU10K1X is not set
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_HDA_INTEL is not set
# CONFIG_SND_HDSP is not set
CONFIG_SND_HDSPM=m
CONFIG_SND_HIFIER=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_NM256 is not set
CONFIG_SND_PCXHR=m
CONFIG_SND_RIPTIDE=m
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
CONFIG_SND_VIRTUOSO=m
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0

#
# SPI devices
#

#
# USB devices
#
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_CAIAQ=m
CONFIG_SND_USB_CAIAQ_INPUT=y

#
# ALSA Sparc devices
#
CONFIG_SND_SUN_AMD7930=m
CONFIG_SND_SUN_CS4231=m
CONFIG_SND_SUN_DBRI=m

#
# System on Chip audio support
#
# CONFIG_SND_SOC is not set

#
# ALSA SoC audio for Freescale SOCs
#

#
# SoC Audio for the Texas Instruments OMAP
#

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
CONFIG_HIDRAW=y

#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
CONFIG_HID_FF=y
CONFIG_HID_PID=y
CONFIG_LOGITECH_FF=y
CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_PANTHERLORD_FF=y
CONFIG_THRUSTMASTER_FF=y
CONFIG_ZEROPLUS_FF=y
# CONFIG_USB_HIDDEV is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_C67X00_HCD=m
CONFIG_USB_EHCI_HCD=m
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_ISP116X_HCD=m
# CONFIG_USB_ISP1760_HCD is not set
CONFIG_USB_OHCI_HCD=m
# CONFIG_USB_OHCI_HCD_SSB is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=m
CONFIG_USB_U132_HCD=m
# CONFIG_USB_SL811_HCD is not set
CONFIG_USB_R8A66597_HCD=m

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=m
CONFIG_USB_WDM=m

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
CONFIG_USB_STORAGE_FREECOM=y
CONFIG_USB_STORAGE_ISD200=y
CONFIG_USB_STORAGE_DPCM=y
# CONFIG_USB_STORAGE_USBAT is not set
CONFIG_USB_STORAGE_SDDR09=y
CONFIG_USB_STORAGE_SDDR55=y
# CONFIG_USB_STORAGE_JUMPSHOT is not set
CONFIG_USB_STORAGE_ALAUDA=y
CONFIG_USB_STORAGE_ONETOUCH=y
CONFIG_USB_STORAGE_KARMA=y
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
# CONFIG_USB_LIBUSUAL is not set

#
# USB Imaging devices
#
CONFIG_USB_MDC800=m
CONFIG_USB_MICROTEK=m
CONFIG_USB_MON=y

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
CONFIG_USB_SERIAL=m
CONFIG_USB_EZUSB=y
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_AIRCABLE=m
CONFIG_USB_SERIAL_AIRPRIME=m
CONFIG_USB_SERIAL_ARK3116=m
CONFIG_USB_SERIAL_BELKIN=m
CONFIG_USB_SERIAL_CH341=m
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_FUNSOFT=m
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
CONFIG_USB_SERIAL_EDGEPORT=m
CONFIG_USB_SERIAL_EDGEPORT_TI=m
CONFIG_USB_SERIAL_GARMIN=m
CONFIG_USB_SERIAL_IPW=m
CONFIG_USB_SERIAL_IUU=m
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
CONFIG_USB_SERIAL_MOS7720=m
CONFIG_USB_SERIAL_MOS7840=m
CONFIG_USB_SERIAL_MOTOROLA=m
CONFIG_USB_SERIAL_NAVMAN=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_OTI6858=m
CONFIG_USB_SERIAL_SPCP8X5=m
CONFIG_USB_SERIAL_HP4X=m
CONFIG_USB_SERIAL_SAFE=m
# CONFIG_USB_SERIAL_SAFE_PADDED is not set
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
# CONFIG_USB_SERIAL_TI is not set
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OMNINET=m
CONFIG_USB_SERIAL_DEBUG=m

#
# USB Miscellaneous drivers
#
CONFIG_USB_ADUTUX=m
# CONFIG_USB_AUERSWALD is not set
CONFIG_USB_RIO500=m
# CONFIG_USB_LEGOTOWER is not set
CONFIG_USB_LCD=m
CONFIG_USB_BERRY_CHARGE=m
CONFIG_USB_LED=m
CONFIG_USB_CYPRESS_CY7C63=m
CONFIG_USB_CYTHERM=m
CONFIG_USB_PHIDGET=m
# CONFIG_USB_PHIDGETKIT is not set
CONFIG_USB_PHIDGETMOTORCONTROL=m
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set
CONFIG_USB_FTDI_ELAN=m
CONFIG_USB_APPLEDISPLAY=m
CONFIG_USB_SISUSBVGA=m
CONFIG_USB_SISUSBVGA_CON=y
CONFIG_USB_LD=m
CONFIG_USB_TRANCEVIBRATOR=m
CONFIG_USB_IOWARRIOR=m
# CONFIG_USB_TEST is not set
CONFIG_USB_ISIGHTFW=m
# CONFIG_USB_GADGET is not set
# CONFIG_MMC is not set
CONFIG_MEMSTICK=m
# CONFIG_MEMSTICK_DEBUG is not set

#
# MemoryStick drivers
#
# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
CONFIG_MSPRO_BLOCK=m

#
# MemoryStick Host Controller Drivers
#
CONFIG_MEMSTICK_TIFM_MS=m
CONFIG_MEMSTICK_JMICRON_38X=m
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m

#
# LED drivers
#

#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_IDE_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
CONFIG_INFINIBAND=m
CONFIG_INFINIBAND_USER_MAD=m
CONFIG_INFINIBAND_USER_ACCESS=m
CONFIG_INFINIBAND_USER_MEM=y
CONFIG_INFINIBAND_ADDR_TRANS=y
CONFIG_INFINIBAND_MTHCA=m
CONFIG_INFINIBAND_MTHCA_DEBUG=y
CONFIG_INFINIBAND_IPATH=m
CONFIG_INFINIBAND_AMSO1100=m
# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
CONFIG_INFINIBAND_CXGB3=m
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_MLX4_INFINIBAND=m
CONFIG_INFINIBAND_NES=m
# CONFIG_INFINIBAND_NES_DEBUG is not set
CONFIG_INFINIBAND_IPOIB=m
# CONFIG_INFINIBAND_IPOIB_CM is not set
CONFIG_INFINIBAND_IPOIB_DEBUG=y
# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
CONFIG_INFINIBAND_SRP=m
CONFIG_INFINIBAND_ISER=m
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set

#
# I2C RTC drivers
#
CONFIG_RTC_DRV_DS1307=m
CONFIG_RTC_DRV_DS1374=m
CONFIG_RTC_DRV_DS1672=m
CONFIG_RTC_DRV_MAX6900=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_X1205=m
CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
# CONFIG_RTC_DRV_M41T80_WDT is not set
CONFIG_RTC_DRV_S35390A=m
CONFIG_RTC_DRV_FM3130=m

#
# SPI RTC drivers
#
CONFIG_RTC_DRV_MAX6902=m
CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RS5C348=m

#
# Platform RTC drivers
#
CONFIG_RTC_DRV_DS1511=m
CONFIG_RTC_DRV_DS1553=m
CONFIG_RTC_DRV_DS1742=m
CONFIG_RTC_DRV_STK17TA8=m
CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_M48T59=m
CONFIG_RTC_DRV_V3020=m

#
# on-CPU RTC drivers
#
# CONFIG_AUXDISPLAY is not set
CONFIG_UIO=m
CONFIG_UIO_CIF=m
CONFIG_UIO_SMX=m

#
# Misc Linux/SPARC drivers
#
CONFIG_SUN_OPENPROMIO=y
CONFIG_OBP_FLASH=m
# CONFIG_SUN_BPP is not set
CONFIG_BBC_I2C=m
CONFIG_ENVCTRL=m
CONFIG_DISPLAY7SEG=m

#
# File systems
#
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=m
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT4DEV_FS=m
CONFIG_EXT4DEV_FS_XATTR=y
CONFIG_EXT4DEV_FS_POSIX_ACL=y
CONFIG_EXT4DEV_FS_SECURITY=y
CONFIG_JBD=m
# CONFIG_JBD_DEBUG is not set
CONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_XFS_RT=y
# CONFIG_XFS_DEBUG is not set
CONFIG_GFS2_FS=m
CONFIG_GFS2_FS_LOCKING_NOLOCK=m
CONFIG_GFS2_FS_LOCKING_DLM=m
CONFIG_OCFS2_FS=m
CONFIG_OCFS2_FS_O2CB=m
CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
CONFIG_OCFS2_DEBUG_MASKLOG=y
# CONFIG_OCFS2_DEBUG_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
CONFIG_QFMT_V1=m
CONFIG_QFMT_V2=m
CONFIG_QUOTACTL=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=m
CONFIG_GENERIC_ACL=y

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=m
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HUGETLBFS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=m

#
# Miscellaneous filesystems
#
CONFIG_ADFS_FS=m
# CONFIG_ADFS_FS_RW is not set
CONFIG_AFFS_FS=m
CONFIG_ECRYPT_FS=m
CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
CONFIG_BEFS_FS=m
# CONFIG_BEFS_DEBUG is not set
CONFIG_BFS_FS=m
CONFIG_EFS_FS=m
CONFIG_CRAMFS=m
CONFIG_VXFS_FS=m
CONFIG_MINIX_FS=m
CONFIG_HPFS_FS=m
CONFIG_QNX4FS_FS=m
CONFIG_ROMFS_FS=m
CONFIG_SYSV_FS=m
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_UFS_DEBUG is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_SUNRPC_XPRT_RDMA=m
CONFIG_SUNRPC_BIND34=y
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_SPKM3=m
# CONFIG_SMB_FS is not set
CONFIG_CIFS=m
# CONFIG_CIFS_STATS is not set
CONFIG_CIFS_WEAK_PW_HASH=y
CONFIG_CIFS_XATTR=y
CONFIG_CIFS_POSIX=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_EXPERIMENTAL=y
CONFIG_CIFS_UPCALL=y
CONFIG_CIFS_DFS_UPCALL=y
CONFIG_NCP_FS=m
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
# CONFIG_NCPFS_STRONG is not set
CONFIG_NCPFS_NFS_NS=y
CONFIG_NCPFS_OS2_NS=y
# CONFIG_NCPFS_SMALLDOS is not set
CONFIG_NCPFS_NLS=y
CONFIG_NCPFS_EXTRAS=y
CONFIG_CODA_FS=m
# CONFIG_CODA_FS_OLD_API is not set
CONFIG_AFS_FS=m
# CONFIG_AFS_DEBUG is not set
CONFIG_9P_FS=m

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
CONFIG_SUN_PARTITION=y
CONFIG_KARMA_PARTITION=y
# CONFIG_EFI_PARTITION is not set
# CONFIG_SYSV68_PARTITION is not set
CONFIG_NLS=m
CONFIG_NLS_DEFAULT="utf8"
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_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=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_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=m
CONFIG_DLM=m
CONFIG_DLM_DEBUG=y

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=2048
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_DCFLUSH is not set
# CONFIG_STACK_DEBUG is not set
# CONFIG_DEBUG_PAGEALLOC is not set

#
# Security options
#
CONFIG_KEYS=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_CAPABILITIES=y
CONFIG_SECURITY_FILE_CAPABILITIES=y
# CONFIG_SECURITY_ROOTPLUG is not set
CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
CONFIG_SECURITY_SELINUX_DISABLE=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT is not set
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
CONFIG_XOR_BLOCKS=m
CONFIG_ASYNC_CORE=m
CONFIG_ASYNC_MEMCPY=m
CONFIG_ASYNC_XOR=m
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m

#
# Authenticated Encryption with Associated Data
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
CONFIG_CRYPTO_SEQIV=m

#
# Block modes
#
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_CTR=m
CONFIG_CRYPTO_CTS=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_XTS=m

#
# Hash modes
#
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=m

#
# Digest
#
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_TGR192=m
CONFIG_CRYPTO_WP512=m

#
# Ciphers
#
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
CONFIG_CRYPTO_SEED=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m

#
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_LZO=m
CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_HIFN_795X=m
CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y

#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_GENERIC_FIND_FIRST_BIT is not set
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=m
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_HAVE_LMB=y

[-- Attachment #3: dmesg.txt --]
[-- Type: text/plain, Size: 5716 bytes --]

[  271.325304] zd1211rw 4-3:1.0: zd_usb_init_hw() 
[  271.325336] usb 4-3: request_fw_file() fw name zd1211/zd1211_ub
[  271.325350] firmware: requesting zd1211/zd1211_ub
[  271.476106] usb 4-3: upload_firmware() firmware device id 0x4330 is equal to the actual device id
[  271.476137] usb 4-3: request_fw_file() fw name zd1211/zd1211_uphr
[  271.476150] firmware: requesting zd1211/zd1211_uphr
[  271.569862] usb 4-3: upload_code() transfer size 4096
[  271.578182] usb 4-3: upload_code() transfer size 1024
[  271.580654] usb 4-3: upload_code() firmware confirm return value 0x01
[  271.582132] zd1211rw 4-3:1.0: zd_usb_enable_int() 
[  271.582157] zd1211rw 4-3:1.0: zd_usb_enable_int() submit urb fffff8003d87d760
[  271.582248] zd1211rw 4-3:1.0: zd_chip_init_hw() 
[  271.585008] zd1211rw 4-3:1.0: dump_cr() CR_AFTER_PNP 0x00000000
[  271.588099] zd1211rw 4-3:1.0: dump_cr() CR_GPI_EN 0x00000000
[  271.590355] zd1211rw 4-3:1.0: dump_cr() CR_INTERRUPT 0x00000000
[  271.593683] zd1211rw 4-3:1.0: read_fw_regs_offset() fw_regs_base: 0xf7d4
[  271.602272] zd1211rw 4-3:1.0: read_pod() E2P_POD 0x0000011d
[  271.602304] zd1211rw 4-3:1.0: read_pod() RF RF2959_RF 0xd PA type 0x0 patch CCK 1 patch CR157 0 patch 6M 0 new PHY 0 link LED1 tx led 1
[  271.602323] zd1211rw 4-3:1.0: hw_init() 
[  271.602334] zd1211rw 4-3:1.0: zd1211_hw_reset_phy() 
[  271.648438] zd1211rw 4-3:1.0: zd1211_hw_init_hmac() 
[  271.655178] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0000007 bits 24
[  271.656674] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x007dd43 bits 24
[  271.658680] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0080959 bits 24
[  271.660681] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x00e6666 bits 24
[  271.662678] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0116a57 bits 24
[  271.664679] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x017dd43 bits 24
[  271.666676] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x01819f9 bits 24
[  271.668677] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x01e6666 bits 24
[  271.670676] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0214554 bits 24
[  271.672676] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x025e7fa bits 24
[  271.674675] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x027fffa bits 24
[  271.676674] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0294128 bits 24
[  271.678675] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x02c0000 bits 24
[  271.680675] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0300000 bits 24
[  271.682673] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0340000 bits 24
[  271.684672] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0381e0f bits 24
[  271.686673] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x06c180f bits 24
[  271.692137] zd1211rw 4-3:1.0: firmware version 4605
[  271.751128] zd1211rw 4-3:1.0: dump_fw_registers() FW_FIRMWARE_VER 0x4605
[  271.751150] zd1211rw 4-3:1.0: dump_fw_registers() FW_USB_SPEED 0x0001
[  271.751165] zd1211rw 4-3:1.0: dump_fw_registers() FW_FIX_TX_RATE 0x0000
[  271.751180] zd1211rw 4-3:1.0: dump_fw_registers() FW_LINK_STATUS 0x0000
[  271.753131] zd1211rw 4-3:1.0: dump_cr() CR_AFTER_PNP 0x00000001
[  271.755128] zd1211rw 4-3:1.0: dump_cr() CR_GPI_EN 0x00000000
[  271.757129] zd1211rw 4-3:1.0: dump_cr() CR_INTERRUPT 0x00000000
[  271.797122] zd1211rw 4-3:1.0: zd1211 chip 6891:a727 v4330 high 00-14-7c RF2959_RF pa0 g----
[  271.898091] zd1211rw 4-3:1.0: zd_read_regdomain() regdomain: 0x10
[  271.898769] zd1211rw 4-3:1.0: regdomain 0x10
[  271.898892] zd1211rw 4-3:1.0: zd_usb_disable_int() urb fffff8003d87d760 killed
[  271.898911] zd1211rw 4-3:1.0: zd_usb_enable_int() 
[  271.898927] zd1211rw 4-3:1.0: zd_usb_enable_int() submit urb fffff8003d87d760
[  271.904612] zd1211rw 4-3:1.0: zd_usb_enable_rx() 
[  271.905164] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  271.998149] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  272.091852] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  272.185590] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  272.279318] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  272.373829] zd1211rw 4-3:1.0: housekeeping_enable() 
[  272.373863] zd1211rw 4-3:1.0: zd_write_mac_addr() mac addr 00:14:7c:66:b0:e7
[  274.128969] zd1211rw 4-3:1.0: zd_op_bss_info_changed() changes: 6
[  274.130992] zd1211rw 4-3:1.0: zd_chip_set_rts_cts_rate_locked() preamble=0
[  274.183133] zd1211rw 4-3:1.0: zd_rf_set_channel() channel: 1
[  274.183158] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x0181979 bits 24
[  274.184989] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x01e6666 bits 24
[  274.190470] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[  276.910035] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  277.003044] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  277.096765] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  277.190494] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  277.284219] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  277.378743] usb 4-3: rx_urb_complete() *** first fragment ***
[  277.378770] usb 4-3: rx_urb_complete() *** second fragment ***
[  281.926514] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  282.019509] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  282.113227] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  282.206956] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
[  282.300681] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25  8:54 zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx) Shaddy Baddah
@ 2008-10-25  9:17 ` Johannes Berg
  2008-10-25 11:25   ` Sebastian Andrzej Siewior
  2008-10-25 11:21 ` Sebastian Andrzej Siewior
  1 sibling, 1 reply; 31+ messages in thread
From: Johannes Berg @ 2008-10-25  9:17 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah

[-- Attachment #1: Type: text/plain, Size: 288 bytes --]

> [  277.190494] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]

my best bet is this:

        fc = *(__le16 *)buffer;

could you try something with get_unaligned? Though if this is it,
then ... We really need disassembly of the exact spot.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25  8:54 zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx) Shaddy Baddah
  2008-10-25  9:17 ` Johannes Berg
@ 2008-10-25 11:21 ` Sebastian Andrzej Siewior
  2008-10-25 11:25   ` Michael Buesch
  1 sibling, 1 reply; 31+ messages in thread
From: Sebastian Andrzej Siewior @ 2008-10-25 11:21 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah

* Shaddy Baddah | 2008-10-25 19:54:19 [+1100]:

> [  282.300681] Kernel unaligned access at TPC[10129b68] 
> zd_mac_rx+0x144/0x32c [zd1211rw]
>
> periodically is reported even after the ifconfig command completes 
> (seemingly successfully).
>
> Thanks in advance for your assistance,
Could you try this patch:

>From a46436536ab13926ff3f592cfa3c333e06a99a0a Mon Sep 17 00:00:00 2001
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Date: Sat, 25 Oct 2008 13:15:14 +0200
Subject: [PATCH] wireless/zd1211rw: use  get_unaligned_le16 helper

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
 drivers/net/wireless/zd1211rw/zd_mac.c |    5 +++--
 drivers/net/wireless/zd1211rw/zd_usb.c |    2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index 4d7b98b..bf4b4a4 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -25,6 +25,7 @@
 #include <linux/usb.h>
 #include <linux/jiffies.h>
 #include <net/ieee80211_radiotap.h>
+#include <asm/unaligned.h>
 
 #include "zd_def.h"
 #include "zd_chip.h"
@@ -662,7 +663,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length)
 			&& !mac->pass_ctrl)
 		return 0;
 
-	fc = *(__le16 *)buffer;
+	fc = get_unaligned_le32(buffer);
 	need_padding = ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc);
 
 	skb = dev_alloc_skb(length + (need_padding ? 2 : 0));
@@ -758,7 +759,7 @@ void zd_process_intr(struct work_struct *work)
 	u16 int_status;
 	struct zd_mac *mac = container_of(work, struct zd_mac, process_intr);
 
-	int_status = le16_to_cpu(*(__le16 *)(mac->intr_buffer+4));
+	int_status = get_unaligned_le16(mac->intr_buffer+4);
 	if (int_status & INT_CFG_NEXT_BCN) {
 		if (net_ratelimit())
 			dev_dbg_f(zd_mac_dev(mac), "INT_CFG_NEXT_BCN\n");
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index a60ae86..0b27778 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -355,7 +355,7 @@ static inline void handle_regs_int(struct urb *urb)
 	ZD_ASSERT(in_interrupt());
 	spin_lock(&intr->lock);
 
-	int_num = le16_to_cpu(*(__le16 *)(urb->transfer_buffer+2));
+	int_num = get_unaligned_le16(urb->transfer_buffer+2);
 	if (int_num == CR_INTERRUPT) {
 		struct zd_mac *mac = zd_hw_mac(zd_usb_to_hw(urb->context));
 		memcpy(&mac->intr_buffer, urb->transfer_buffer,
-- 
1.6.0.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25 11:21 ` Sebastian Andrzej Siewior
@ 2008-10-25 11:25   ` Michael Buesch
  2008-10-25 11:28     ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 31+ messages in thread
From: Michael Buesch @ 2008-10-25 11:25 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: linux-wireless, Shaddy Baddah

On Saturday 25 October 2008 13:21:47 Sebastian Andrzej Siewior wrote:
> -	fc = *(__le16 *)buffer;
> +	fc = get_unaligned_le32(buffer);

I'd say this semantically changes the code.

>  	need_padding = ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc);
>  
>  	skb = dev_alloc_skb(length + (need_padding ? 2 : 0));

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25  9:17 ` Johannes Berg
@ 2008-10-25 11:25   ` Sebastian Andrzej Siewior
  2008-10-25 12:05     ` Johannes Berg
  0 siblings, 1 reply; 31+ messages in thread
From: Sebastian Andrzej Siewior @ 2008-10-25 11:25 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Shaddy Baddah

* Johannes Berg | 2008-10-25 11:17:21 [+0200]:

>> [  277.190494] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
>
>my best bet is this:
>
>        fc = *(__le16 *)buffer;
>
>could you try something with get_unaligned? Though if this is it,
>then ... We really need disassembly of the exact spot.
A few lines before that:
|         buffer += ZD_PLCP_HEADER_SIZE;

and ZD_PLCP_HEADER_SIZE is 5 so we end up unaligned, don't we?

>
>johannes

Sebastian

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25 11:25   ` Michael Buesch
@ 2008-10-25 11:28     ` Sebastian Andrzej Siewior
  2008-10-25 11:31       ` Michael Buesch
                         ` (2 more replies)
  0 siblings, 3 replies; 31+ messages in thread
From: Sebastian Andrzej Siewior @ 2008-10-25 11:28 UTC (permalink / raw)
  To: Michael Buesch; +Cc: linux-wireless, Shaddy Baddah

* Michael Buesch | 2008-10-25 13:25:07 [+0200]:

>On Saturday 25 October 2008 13:21:47 Sebastian Andrzej Siewior wrote:
>> -	fc = *(__le16 *)buffer;
>> +	fc = get_unaligned_le32(buffer);
>
>I'd say this semantically changes the code.
argh,
sorry,

Subject: [PATCH] wireless/zd1211rw: use  get_unaligned_le16 helper (v2)

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
---
 drivers/net/wireless/zd1211rw/zd_mac.c |    5 +++--
 drivers/net/wireless/zd1211rw/zd_usb.c |    2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index 4d7b98b..bf4b4a4 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -25,6 +25,7 @@
 #include <linux/usb.h>
 #include <linux/jiffies.h>
 #include <net/ieee80211_radiotap.h>
+#include <asm/unaligned.h>
 
 #include "zd_def.h"
 #include "zd_chip.h"
@@ -662,7 +663,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length)
 			&& !mac->pass_ctrl)
 		return 0;
 
-	fc = *(__le16 *)buffer;
+	fc = get_unaligned_le16(buffer);
 	need_padding = ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc);
 
 	skb = dev_alloc_skb(length + (need_padding ? 2 : 0));
@@ -758,7 +759,7 @@ void zd_process_intr(struct work_struct *work)
 	u16 int_status;
 	struct zd_mac *mac = container_of(work, struct zd_mac, process_intr);
 
-	int_status = le16_to_cpu(*(__le16 *)(mac->intr_buffer+4));
+	int_status = get_unaligned_le16(mac->intr_buffer+4);
 	if (int_status & INT_CFG_NEXT_BCN) {
 		if (net_ratelimit())
 			dev_dbg_f(zd_mac_dev(mac), "INT_CFG_NEXT_BCN\n");
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c
index a60ae86..0b27778 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -355,7 +355,7 @@ static inline void handle_regs_int(struct urb *urb)
 	ZD_ASSERT(in_interrupt());
 	spin_lock(&intr->lock);
 
-	int_num = le16_to_cpu(*(__le16 *)(urb->transfer_buffer+2));
+	int_num = get_unaligned_le16(urb->transfer_buffer+2);
 	if (int_num == CR_INTERRUPT) {
 		struct zd_mac *mac = zd_hw_mac(zd_usb_to_hw(urb->context));
 		memcpy(&mac->intr_buffer, urb->transfer_buffer,
-- 
1.6.0.2


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25 11:28     ` Sebastian Andrzej Siewior
@ 2008-10-25 11:31       ` Michael Buesch
  2008-10-25 11:38         ` Sebastian Andrzej Siewior
  2008-10-25 15:13       ` Shaddy Baddah
       [not found]       ` <492F856D.9020200@hotmail.com>
  2 siblings, 1 reply; 31+ messages in thread
From: Michael Buesch @ 2008-10-25 11:31 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: linux-wireless, Shaddy Baddah

On Saturday 25 October 2008 13:28:13 Sebastian Andrzej Siewior wrote:
> @@ -662,7 +663,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length)
>  			&& !mac->pass_ctrl)
>  		return 0;
>  
> -	fc = *(__le16 *)buffer;
> +	fc = get_unaligned_le16(buffer);

This still does semantically change the code.
fc is supposed to be LE and is used as LE in the following code.

>  	need_padding = ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc);
>  
>  	skb = dev_alloc_skb(length + (need_padding ? 2 : 0));

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25 11:31       ` Michael Buesch
@ 2008-10-25 11:38         ` Sebastian Andrzej Siewior
  0 siblings, 0 replies; 31+ messages in thread
From: Sebastian Andrzej Siewior @ 2008-10-25 11:38 UTC (permalink / raw)
  To: Michael Buesch; +Cc: linux-wireless, Shaddy Baddah

* Michael Buesch | 2008-10-25 13:31:24 [+0200]:

>On Saturday 25 October 2008 13:28:13 Sebastian Andrzej Siewior wrote:
>> @@ -662,7 +663,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length)
>>  			&& !mac->pass_ctrl)
>>  		return 0;
>>  
>> -	fc = *(__le16 *)buffer;
>> +	fc = get_unaligned_le16(buffer);
>
>This still does semantically change the code.
>fc is supposed to be LE and is used as LE in the following code.
So you say we need a get_unaligned() here. Okay. 
A few lines before that, in filter_ack() we dereferance the same
position. filter_ack() is used once and probably inlined so I guess
that's the address where the unaligned access occurs.

>>  	need_padding = ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc);
>>  
>>  	skb = dev_alloc_skb(length + (need_padding ? 2 : 0));



>-- 
>Greetings Michael.

Sebastian

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25 11:25   ` Sebastian Andrzej Siewior
@ 2008-10-25 12:05     ` Johannes Berg
  2008-10-26 22:00       ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 31+ messages in thread
From: Johannes Berg @ 2008-10-25 12:05 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: linux-wireless, Shaddy Baddah

[-- Attachment #1: Type: text/plain, Size: 719 bytes --]

On Sat, 2008-10-25 at 13:25 +0200, Sebastian Andrzej Siewior wrote:
> * Johannes Berg | 2008-10-25 11:17:21 [+0200]:
> 
> >> [  277.190494] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
> >
> >my best bet is this:
> >
> >        fc = *(__le16 *)buffer;
> >
> >could you try something with get_unaligned? Though if this is it,
> >then ... We really need disassembly of the exact spot.
> A few lines before that:
> |         buffer += ZD_PLCP_HEADER_SIZE;
> 
> and ZD_PLCP_HEADER_SIZE is 5 so we end up unaligned, don't we?

Depends where the buffer was before, and thought has gone into this
alignment stuff here so it shouldn't. Might well be a new bug though.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25 11:28     ` Sebastian Andrzej Siewior
  2008-10-25 11:31       ` Michael Buesch
@ 2008-10-25 15:13       ` Shaddy Baddah
       [not found]         ` <491589ED.4090904@hotmail.com>
       [not found]       ` <492F856D.9020200@hotmail.com>
  2 siblings, 1 reply; 31+ messages in thread
From: Shaddy Baddah @ 2008-10-25 15:13 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: Michael Buesch, linux-wireless

Hi Sebastian,

Sebastian Andrzej Siewior wrote:
> * Michael Buesch | 2008-10-25 13:25:07 [+0200]:
> 
>> On Saturday 25 October 2008 13:21:47 Sebastian Andrzej Siewior wrote:
>>> -	fc = *(__le16 *)buffer;
>>> +	fc = get_unaligned_le32(buffer);
>> I'd say this semantically changes the code.
> argh,
> sorry,
> 
> Subject: [PATCH] wireless/zd1211rw: use  get_unaligned_le16 helper (v2)
> 
> Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>

After applying this patch, things seem better. I can associate to an 
open access point, get an IP address and even ping.

However on association, I am still seeing:


[  179.249516] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x01e6666 bits 24
[  179.254524] wlan0: Initial auth_alg=0
[  179.254549] wlan0: authenticate with AP XX:XX:XX:XX:XX:XX
[  179.256215] Kernel unaligned access at TPC[10129b94] 
zd_mac_rx+0x174/0x320 [zd1211rw]
[  179.349135] Kernel unaligned access at TPC[10129b9c] 
zd_mac_rx+0x17c/0x320 [zd1211rw]
[  179.442852] Kernel unaligned access at TPC[10129ba0] 
zd_mac_rx+0x180/0x320 [zd1211rw]
[  179.536579] Kernel unaligned access at TPC[10129ba4] 
zd_mac_rx+0x184/0x320 [zd1211rw]
[  179.630306] Kernel unaligned access at TPC[10129ba8] 
zd_mac_rx+0x188/0x320 [zd1211rw]
[  179.727277] wlan0: RX authentication from XX:XX:XX:XX:XX:XX (alg=0 
transaction=2 status=0)
[  179.727302] wlan0: authenticated
[  179.727318] wlan0: associate with AP XX:XX:XX:XX:XX:XX
[  179.727440] wlan0: associate with AP XX:XX:XX:XX:XX:XX
[  179.736350] wlan0: RX AssocResp from XX:XX:XX:XX:XX:XX (capab=0x421 
status=0 aid=12)
[  179.736380] wlan0: associated
[  179.736421] wlan0: CTS protection enabled (BSSID=XX:XX:XX:XX:XX:XX)
[  179.736440] wlan0: switched to short barker preamble 
(BSSID=XX:XX:XX:XX:XX:XX)
[  179.736521] zd1211rw 4-3:1.0: zd_op_bss_info_changed() changes: 7
[  179.736666] wlan0: association frame received from XX:XX:XX:XX:XX:XX, 
but not in associate state - ignored
[  179.737404] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[  179.807280] zd1211rw 4-3:1.0: zd_chip_set_rts_cts_rate_locked() 
preamble=1

and when I start pinging the AP, this starts chiming in:

[  240.139093] Kernel unaligned access at TPC[100f7f44] 
sta_info_get+0x24/0x68 [mac80211]
[  240.233255] Kernel unaligned access at TPC[100f7f48] 
sta_info_get+0x28/0x68 [mac80211]
[  240.328015] Kernel unaligned access at TPC[100f7f50] 
sta_info_get+0x30/0x68 [mac80211]
[  240.422771] Kernel unaligned access at TPC[100f7f44] 
sta_info_get+0x24/0x68 [mac80211]
[  240.517554] Kernel unaligned access at TPC[100f7f48] 
sta_info_get+0x28/0x68 [mac80211]

I also cannot get a full scan with:

iwlist wlan0 scanning

I get about 4 APs (I know there's more) then a bus error. This may be 
related to a similar problem that I was assisted with in my first round 
of posts last year, with regards to the wireless-tools. Perhaps the 
patches still haven't made it downstream?

Thanking you for help,
Shaddy


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-25 12:05     ` Johannes Berg
@ 2008-10-26 22:00       ` Sebastian Andrzej Siewior
  2008-10-27  7:00         ` Johannes Berg
  0 siblings, 1 reply; 31+ messages in thread
From: Sebastian Andrzej Siewior @ 2008-10-26 22:00 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Shaddy Baddah

* Johannes Berg | 2008-10-25 14:05:11 [+0200]:

>On Sat, 2008-10-25 at 13:25 +0200, Sebastian Andrzej Siewior wrote:
>> * Johannes Berg | 2008-10-25 11:17:21 [+0200]:
>> 
>> >> [  277.190494] Kernel unaligned access at TPC[10129b68] zd_mac_rx+0x144/0x32c [zd1211rw]
>> >
>> >my best bet is this:
>> >
>> >        fc = *(__le16 *)buffer;
>> >
>> >could you try something with get_unaligned? Though if this is it,
>> >then ... We really need disassembly of the exact spot.
>> A few lines before that:
>> |         buffer += ZD_PLCP_HEADER_SIZE;
>> 
>> and ZD_PLCP_HEADER_SIZE is 5 so we end up unaligned, don't we?
>
>Depends where the buffer was before, and thought has gone into this
>alignment stuff here so it shouldn't. Might well be a new bug though.

On my x86_64 box the address of the buffer pointer right after the add
of ZD_PLCP_HEADER_SIZE is:
[   28.462273] buffer: ffff88003e310005

so it looks to me like it was perfectly aligned before the add. Is it
possible that it is not a new bug and we need a get_unaligend helper
here?

>
>johannes

Sebastian

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-10-26 22:00       ` Sebastian Andrzej Siewior
@ 2008-10-27  7:00         ` Johannes Berg
  0 siblings, 0 replies; 31+ messages in thread
From: Johannes Berg @ 2008-10-27  7:00 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: linux-wireless, Shaddy Baddah

[-- Attachment #1: Type: text/plain, Size: 566 bytes --]

On Sun, 2008-10-26 at 23:00 +0100, Sebastian Andrzej Siewior wrote:

> On my x86_64 box the address of the buffer pointer right after the add
> of ZD_PLCP_HEADER_SIZE is:
> [   28.462273] buffer: ffff88003e310005
> 
> so it looks to me like it was perfectly aligned before the add. Is it
> possible that it is not a new bug and we need a get_unaligend helper
> here?

Possible, yeah, maybe before we only saw problems with the IP alignment
and somehow this shows up now. Not sure. Anyway, if that fixes it,
obviously we want such a patch :)

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]         ` <491589ED.4090904@hotmail.com>
@ 2008-11-08 12:45           ` Shaddy Baddah
  2008-11-08 13:11           ` Johannes Berg
  1 sibling, 0 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-08 12:45 UTC (permalink / raw)
  To: linux-wireless

Hi again,

On 26/10/08 02:13, Shaddy Baddah wrote:
> After applying this patch, things seem better. I can associate to an 
> open access point, get an IP address and even ping.
> 
> However on association, I am still seeing:
> 
> 
> [  179.249516] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x01e6666 bits 24
> [  179.254524] wlan0: Initial auth_alg=0
> [  179.254549] wlan0: authenticate with AP XX:XX:XX:XX:XX:XX
> [  179.256215] Kernel unaligned access at TPC[10129b94] 
> zd_mac_rx+0x174/0x320 [zd1211rw]
> [  179.349135] Kernel unaligned access at TPC[10129b9c] 
> zd_mac_rx+0x17c/0x320 [zd1211rw]
> [  179.442852] Kernel unaligned access at TPC[10129ba0] 
> zd_mac_rx+0x180/0x320 [zd1211rw]
> [  179.536579] Kernel unaligned access at TPC[10129ba4] 
> zd_mac_rx+0x184/0x320 [zd1211rw]
> [  179.630306] Kernel unaligned access at TPC[10129ba8] 
> zd_mac_rx+0x188/0x320 [zd1211rw]

I'm keen on troubleshooting this myself. Could you please tell me how I 
can get a disassembly intermixed with source. An objdump -S ./zd1211rw.o 
is not doing the job. I'd rather not re-compile the whole kernel if 
possible, because it takes long. Should I rm the file, do a build, take 
the command line and substitute -g for any -O option?

TIA,
Shaddy



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]         ` <491589ED.4090904@hotmail.com>
  2008-11-08 12:45           ` Shaddy Baddah
@ 2008-11-08 13:11           ` Johannes Berg
       [not found]             ` <491653A6.20705@hotmail.com>
  1 sibling, 1 reply; 31+ messages in thread
From: Johannes Berg @ 2008-11-08 13:11 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah

[-- Attachment #1: Type: text/plain, Size: 1198 bytes --]

On Sat, 2008-11-08 at 23:45 +1100, Shaddy Baddah wrote:

> > [  179.249516] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x01e6666 bits 24
> > [  179.254524] wlan0: Initial auth_alg=0
> > [  179.254549] wlan0: authenticate with AP XX:XX:XX:XX:XX:XX
> > [  179.256215] Kernel unaligned access at TPC[10129b94] 
> > zd_mac_rx+0x174/0x320 [zd1211rw]
> > [  179.349135] Kernel unaligned access at TPC[10129b9c] 
> > zd_mac_rx+0x17c/0x320 [zd1211rw]
> > [  179.442852] Kernel unaligned access at TPC[10129ba0] 
> > zd_mac_rx+0x180/0x320 [zd1211rw]
> > [  179.536579] Kernel unaligned access at TPC[10129ba4] 
> > zd_mac_rx+0x184/0x320 [zd1211rw]
> > [  179.630306] Kernel unaligned access at TPC[10129ba8] 
> > zd_mac_rx+0x188/0x320 [zd1211rw]
> 
> I'm keen on troubleshooting this myself. Could you please tell me how I 
> can get a disassembly intermixed with source. An objdump -S ./zd1211rw.o 
> is not doing the job. I'd rather not re-compile the whole kernel if 
> possible, because it takes long. Should I rm the file, do a build, take 
> the command line and substitute -g for any -O option?

I usually just _add_ -g3 to the command line I get with make V=1 M=...

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]             ` <491653A6.20705@hotmail.com>
@ 2008-11-09  3:06               ` Shaddy Baddah
       [not found]                 ` <49165436.4040306@hotmail.com>
  2008-11-09 12:00                 ` Michael Buesch
  2008-11-09  8:56               ` Johannes Berg
  1 sibling, 2 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-09  3:06 UTC (permalink / raw)
  To: Johannes Berg, linux-wireless

Hi,

On 09/11/08 00:11, Johannes Berg wrote:
> On Sat, 2008-11-08 at 23:45 +1100, Shaddy Baddah wrote:
> 
>>> [  179.249516] zd1211rw 4-3:1.0: zd_usb_rfwrite() value 0x01e6666 bits 24
>>> [  179.254524] wlan0: Initial auth_alg=0
>>> [  179.254549] wlan0: authenticate with AP XX:XX:XX:XX:XX:XX
>>> [  179.256215] Kernel unaligned access at TPC[10129b94] 
>>> zd_mac_rx+0x174/0x320 [zd1211rw]
>>> [  179.349135] Kernel unaligned access at TPC[10129b9c] 
>>> zd_mac_rx+0x17c/0x320 [zd1211rw]
>>> [  179.442852] Kernel unaligned access at TPC[10129ba0] 
>>> zd_mac_rx+0x180/0x320 [zd1211rw]
>>> [  179.536579] Kernel unaligned access at TPC[10129ba4] 
>>> zd_mac_rx+0x184/0x320 [zd1211rw]
>>> [  179.630306] Kernel unaligned access at TPC[10129ba8] 
>>> zd_mac_rx+0x188/0x320 [zd1211rw]
>> I'm keen on troubleshooting this myself. Could you please tell me how I 
>> can get a disassembly intermixed with source. An objdump -S ./zd1211rw.o 
>> is not doing the job. I'd rather not re-compile the whole kernel if 
>> possible, because it takes long. Should I rm the file, do a build, take 
>> the command line and substitute -g for any -O option?
> 
> I usually just _add_ -g3 to the command line I get with make V=1 M=...

Johannes, thank you for the tip. It's helped me no end.

So, looking into this problem, I was able to come up with a patch 
(attached. Note, it also includes remnants of the patch recommended by 
Sebastian Andrzej Siewior in 
http://marc.info/?l=linux-wireless&m=122493409906326&w=2). The problem 
occurs within compare_ether_addr() and this immediately reminded me that 
the patches recommended to me way back last year 
(http://marc.info/?l=linux-wireless&m=119543627712471&w=2) also dealt 
with this problem.

Looking into how it was solved then, all the compare_ether_addr() calls 
were replaced with memcmp() calls. This is what I have done with my 
patch as well... but this approach did not fill me with confidence. It 
seemed to me like a quick fix that didn't directly address the alignment 
problem. And IMO my subsequent findings confirm this.

I now hit the following kernel errors:

 > [  240.139093] Kernel unaligned access at TPC[100f7f44]
 > sta_info_get+0x24/0x68 [mac80211]
 > [  240.233255] Kernel unaligned access at TPC[100f7f48]
 > sta_info_get+0x28/0x68 [mac80211]
 > [  240.328015] Kernel unaligned access at TPC[100f7f50]
 > sta_info_get+0x30/0x68 [mac80211]
 > [  240.422771] Kernel unaligned access at TPC[100f7f44]
 > sta_info_get+0x24/0x68 [mac80211]
 > [  240.517554] Kernel unaligned access at TPC[100f7f48]
 > sta_info_get+0x28/0x68 [mac80211]

Looking into this, and the underlying problem is again 
compare_ether_addr(). Now, I'm sure that replacing this with a memcmp() 
is now treading on more toes than just zd1211rw users. And for this 
reason, I think a better solution is going to be required.

Does that sound right? I will persist in trying to understand the code 
to try and come up with a fix. But obviously, I hope that I can get help 
with this to make the former an education exercise, not a kernel 
maintenance exercise.

TIA,
Shaddy


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]                 ` <49165436.4040306@hotmail.com>
@ 2008-11-09  3:08                   ` Shaddy Baddah
  0 siblings, 0 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-09  3:08 UTC (permalink / raw)
  To: linux-wireless, Johannes Berg

[-- Attachment #1: Type: text/plain, Size: 360 bytes --]

On 09/11/08 14:06, Shaddy Baddah wrote:
> (attached. Note, it also includes remnants of the patch recommended by 
> Sebastian Andrzej Siewior in 
> http://marc.info/?l=linux-wireless&m=122493409906326&w=2). The problem 
> occurs within compare_ether_addr() and this immediately reminded me that 

This time, really attached. Sorry about that.

Regards,
Shaddy

[-- Attachment #2: zd_mac_rx_fix.diff --]
[-- Type: text/x-diff, Size: 1409 bytes --]

diff -urN -x '*.o' -x '*.ko' ./linux-source-2.6.26.orig/drivers/net/wireless/zd1211rw/zd_mac.c ./linux-source-2.6.26/drivers/net/wireless/zd1211rw/zd_mac.c
--- ./linux-source-2.6.26.orig/drivers/net/wireless/zd1211rw/zd_mac.c	2008-07-14 07:51:29.000000000 +1000
+++ ./linux-source-2.6.26/drivers/net/wireless/zd1211rw/zd_mac.c	2008-11-09 03:52:45.000000000 +1100
@@ -25,6 +25,7 @@
 #include <linux/usb.h>
 #include <linux/jiffies.h>
 #include <net/ieee80211_radiotap.h>
+#include <asm/unaligned.h>
 
 #include "zd_def.h"
 #include "zd_chip.h"
@@ -632,7 +633,7 @@
 		struct ieee80211_hdr *tx_hdr;
 
 		tx_hdr = (struct ieee80211_hdr *)skb->data;
-		if (likely(!compare_ether_addr(tx_hdr->addr2, rx_hdr->addr1)))
+		if (likely(!memcmp(tx_hdr->addr2, rx_hdr->addr1, ETH_ALEN)))
 		{
 			struct ieee80211_tx_status status;
 
@@ -716,7 +717,7 @@
 			&& !mac->pass_ctrl)
 		return 0;
 
-	fc = le16_to_cpu(*((__le16 *) buffer));
+	fc = get_unaligned_le16(buffer);
 
 	is_qos = ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) &&
 		 (fc & IEEE80211_STYPE_QOS_DATA);
@@ -806,7 +807,7 @@
 	u16 int_status;
 	struct zd_mac *mac = container_of(work, struct zd_mac, process_intr);
 
-	int_status = le16_to_cpu(*(__le16 *)(mac->intr_buffer+4));
+	int_status = get_unaligned_le16(mac->intr_buffer+4);
 	if (int_status & INT_CFG_NEXT_BCN) {
 		if (net_ratelimit())
 			dev_dbg_f(zd_mac_dev(mac), "INT_CFG_NEXT_BCN\n");

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]             ` <491653A6.20705@hotmail.com>
  2008-11-09  3:06               ` Shaddy Baddah
@ 2008-11-09  8:56               ` Johannes Berg
  2008-11-09  9:03                 ` Johannes Berg
       [not found]                 ` <4916F1C0.1040703@hotmail.com>
  1 sibling, 2 replies; 31+ messages in thread
From: Johannes Berg @ 2008-11-09  8:56 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah

[-- Attachment #1: Type: text/plain, Size: 2355 bytes --]

Hi,


> So, looking into this problem, I was able to come up with a patch 
> (attached. Note, it also includes remnants of the patch recommended by 
> Sebastian Andrzej Siewior in 
> http://marc.info/?l=linux-wireless&m=122493409906326&w=2). The problem 
> occurs within compare_ether_addr() and this immediately reminded me that 
> the patches recommended to me way back last year 
> (http://marc.info/?l=linux-wireless&m=119543627712471&w=2) also dealt 
> with this problem.

I think you forgot to attach the patch.

> Looking into how it was solved then, all the compare_ether_addr() calls 
> were replaced with memcmp() calls. This is what I have done with my 
> patch as well... but this approach did not fill me with confidence. It 
> seemed to me like a quick fix that didn't directly address the alignment 
> problem. And IMO my subsequent findings confirm this.
> 
> I now hit the following kernel errors:
> 
>  > [  240.139093] Kernel unaligned access at TPC[100f7f44]
>  > sta_info_get+0x24/0x68 [mac80211]
>  > [  240.233255] Kernel unaligned access at TPC[100f7f48]
>  > sta_info_get+0x28/0x68 [mac80211]
>  > [  240.328015] Kernel unaligned access at TPC[100f7f50]
>  > sta_info_get+0x30/0x68 [mac80211]
>  > [  240.422771] Kernel unaligned access at TPC[100f7f44]
>  > sta_info_get+0x24/0x68 [mac80211]
>  > [  240.517554] Kernel unaligned access at TPC[100f7f48]
>  > sta_info_get+0x28/0x68 [mac80211]
> 
> Looking into this, and the underlying problem is again 
> compare_ether_addr(). Now, I'm sure that replacing this with a memcmp() 
> is now treading on more toes than just zd1211rw users. And for this 
> reason, I think a better solution is going to be required.
> 
> Does that sound right? I will persist in trying to understand the code 
> to try and come up with a fix. But obviously, I hope that I can get help 
> with this to make the former an education exercise, not a kernel 
> maintenance exercise.

:)
Yes, I think you're right, it appears that the 802.11 header isn't
aligned on a 2-byte boundary, which is extremely strange. Can you, with
your patch applied, do something like

	printk(KERN_DEBUG "%p\n", skb->data);

before this code in zd_mac.c:

        memcpy(skb_put(skb, length), buffer, length);

        ieee80211_rx_irqsafe(hw, skb, &stats);


johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-11-09  8:56               ` Johannes Berg
@ 2008-11-09  9:03                 ` Johannes Berg
  2008-11-09 12:02                   ` Michael Buesch
       [not found]                 ` <4916F1C0.1040703@hotmail.com>
  1 sibling, 1 reply; 31+ messages in thread
From: Johannes Berg @ 2008-11-09  9:03 UTC (permalink / raw)
  To: linux-wireless; +Cc: Shaddy Baddah

[-- Attachment #1: Type: text/plain, Size: 522 bytes --]

On Sun, 2008-11-09 at 09:56 +0100, Johannes Berg wrote:

> I think you forgot to attach the patch.

Sorry, I missed your second mail. (btw, if you generate patches with -p
in diff arguments it helps a bit reading them)

Ok so it looks like the buffer you're getting is unaligned. This is
strange, but I'm too unfamiliar with the code. It seems that there's the
PLCP 5 byte header in front. Well, try the printk I asked for, because
at that point zd1211 should avoid "leaking" the alignment problem.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-11-09  3:06               ` Shaddy Baddah
       [not found]                 ` <49165436.4040306@hotmail.com>
@ 2008-11-09 12:00                 ` Michael Buesch
  1 sibling, 0 replies; 31+ messages in thread
From: Michael Buesch @ 2008-11-09 12:00 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah; +Cc: Johannes Berg

On Sunday 09 November 2008 04:06:14 Shaddy Baddah wrote:
> Looking into this, and the underlying problem is again 
> compare_ether_addr(). Now, I'm sure that replacing this with a memcmp() 
> is now treading on more toes than just zd1211rw users. And for this 
> reason, I think a better solution is going to be required.

I think this requires a comment in the code why we do not use
compare_ether_addr() at this place. Something like:

/* We use memcmp() instead of compare_ether_addr(), because the
 * packet might not be 4-byte aligned, yet. This is done later. */

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-11-09  9:03                 ` Johannes Berg
@ 2008-11-09 12:02                   ` Michael Buesch
  2008-11-09 18:31                     ` Johannes Berg
  0 siblings, 1 reply; 31+ messages in thread
From: Michael Buesch @ 2008-11-09 12:02 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Shaddy Baddah

On Sunday 09 November 2008 10:03:58 Johannes Berg wrote:
> On Sun, 2008-11-09 at 09:56 +0100, Johannes Berg wrote:
> 
> > I think you forgot to attach the patch.
> 
> Sorry, I missed your second mail. (btw, if you generate patches with -p
> in diff arguments it helps a bit reading them)
> 
> Ok so it looks like the buffer you're getting is unaligned. This is
> strange, but I'm too unfamiliar with the code. It seems that there's the
> PLCP 5 byte header in front. Well, try the printk I asked for, because
> at that point zd1211 should avoid "leaking" the alignment problem.

zd1211rw has some code to align the packet to a 4-byte boundary.
But the compare_ether_addr() and the other le16 accesses are done before
that realignment.
This these blow up if (ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc))

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]                 ` <4916F1C0.1040703@hotmail.com>
@ 2008-11-09 14:20                   ` Shaddy Baddah
       [not found]                   ` <49184F82.9070102@hotmail.com>
  1 sibling, 0 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-09 14:20 UTC (permalink / raw)
  To: Johannes Berg, linux-wireless

Hi,

On 09/11/08 19:56, Johannes Berg wrote:
> Yes, I think you're right, it appears that the 802.11 header isn't
> aligned on a 2-byte boundary, which is extremely strange. Can you, with
> your patch applied, do something like
> 
> 	printk(KERN_DEBUG "%p\n", skb->data);
> 
> before this code in zd_mac.c:
> 
>         memcpy(skb_put(skb, length), buffer, length);
> 
>         ieee80211_rx_irqsafe(hw, skb, &stats);

I have done this... but I think that there is too much output to place 
here. What I can tell you with confidence is that every value is 4-byte 
aligned.

However, I modify filter_ack() in zd_mac.c so that the code looks like this:

         for (skb = q->next; skb != (struct sk_buff *)q; skb = skb->next) {
                 struct ieee80211_hdr *tx_hdr;

                 tx_hdr = (struct ieee80211_hdr *)skb->data;
         printk(KERN_DEBUG "%s:%u: skb %p skb->data %p tx_hdr->addr2 %p 
rx_hdr->addr1 %p\n", __FILE__, __LINE__, skb, skb->data, tx_hdr->addr2, 
rx_hdr->addr1);
                 //if (likely(!memcmp(tx_hdr->addr2, rx_hdr->addr1, 
ETH_ALEN)))
                 if (likely(!compare_ether_addr(tx_hdr->addr2, 
rx_hdr->addr1)))
                 {

(note, I re-instated the compare_ether_addr() so that I could be sure 
that the unaligned access corresponded with whatever values I was seeing 
in the print).

Here is the output of the first print from this location that I see in 
syslog:

Nov 10 00:47:17 trad kernel: [ 8239.534950] 
drivers/net/wireless/zd1211rw/zd_mac.c:639: skb fffff8003d0d8fc0 
skb->data fffff8003d874cdb tx_hdr->addr2 fffff8003d874ce5 rx_hdr->addr1 
fffff8003f3e0009
Nov 10 00:47:17 trad kernel: [ 8239.534986] Kernel unaligned access at 
TPC[100f5bd0] zd_mac_rx+0x1b0/0x398 [zd1211rw]
Nov 10 00:47:17 trad kernel: [ 8239.637697] Kernel unaligned access at 
TPC[100f5bd4] zd_mac_rx+0x1b4/0x398 [zd1211rw]
Nov 10 00:47:17 trad kernel: [ 8239.740208] Kernel unaligned access at 
TPC[100f5bd8] zd_mac_rx+0x1b8/0x398 [zd1211rw]
Nov 10 00:47:17 trad kernel: [ 8239.842417] Kernel unaligned access at 
TPC[100f5bdc] zd_mac_rx+0x1bc/0x398 [zd1211rw]
Nov 10 00:47:17 trad kernel: [ 8239.944583] Kernel unaligned access at 
TPC[100f5be0] zd_mac_rx+0x1c0/0x398 [zd1211rw]

So you can see that skb->data is not even 2-byte aligned. And my debug 
leads me to believe that the problem is this line in zd_mac_tx_to_dev():

                  skb_pull(skb, sizeof(struct zd_ctrlset));

A before and after of this line gives me this output:

Nov 10 00:47:17 trad kernel: [ 8239.534065] 
drivers/net/wireless/zd1211rw/zd_mac.c:376: skb fffff8003d0d8fc0 
skb->data fffff8003d874cd0
Nov 10 00:47:17 trad kernel: [ 8239.534092] 
drivers/net/wireless/zd1211rw/zd_mac.c:390: skb fffff8003d0d8fc0 
skb->data fffff8003d874cdb

Perhaps there needs to be some padding there?

Also, I've just had a look at the git version of zd_mac.c, and I notice 
it is all change there again. I would feel uncomfortable having studied 
the 2.6.26 code to have to start again. Is it expected that I use the 
latest available via git?

Thanks in advance,
Shaddy


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-11-09 12:02                   ` Michael Buesch
@ 2008-11-09 18:31                     ` Johannes Berg
  0 siblings, 0 replies; 31+ messages in thread
From: Johannes Berg @ 2008-11-09 18:31 UTC (permalink / raw)
  To: Michael Buesch; +Cc: linux-wireless, Shaddy Baddah

[-- Attachment #1: Type: text/plain, Size: 1020 bytes --]

On Sun, 2008-11-09 at 13:02 +0100, Michael Buesch wrote:
> On Sunday 09 November 2008 10:03:58 Johannes Berg wrote:
> > On Sun, 2008-11-09 at 09:56 +0100, Johannes Berg wrote:
> > 
> > > I think you forgot to attach the patch.
> > 
> > Sorry, I missed your second mail. (btw, if you generate patches with -p
> > in diff arguments it helps a bit reading them)
> > 
> > Ok so it looks like the buffer you're getting is unaligned. This is
> > strange, but I'm too unfamiliar with the code. It seems that there's the
> > PLCP 5 byte header in front. Well, try the printk I asked for, because
> > at that point zd1211 should avoid "leaking" the alignment problem.
> 
> zd1211rw has some code to align the packet to a 4-byte boundary.
> But the compare_ether_addr() and the other le16 accesses are done before
> that realignment.
> This these blow up if (ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc))

Well, yes, however, then his patch should have fixed the whole thing,
which it didn't.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]                   ` <49184F82.9070102@hotmail.com>
@ 2008-11-10 15:13                     ` Shaddy Baddah
       [not found]                       ` <492F82EA.4030902@hotmail.com>
  0 siblings, 1 reply; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-10 15:13 UTC (permalink / raw)
  To: linux-wireless

Hi again,

On 10/11/08 01:20, Shaddy Baddah wrote:
]> So you can see that skb->data is not even 2-byte aligned. And my debug
> leads me to believe that the problem is this line in zd_mac_tx_to_dev():
> 
>                  skb_pull(skb, sizeof(struct zd_ctrlset));
> 
> A before and after of this line gives me this output:
> 
> Nov 10 00:47:17 trad kernel: [ 8239.534065] 
> drivers/net/wireless/zd1211rw/zd_mac.c:376: skb fffff8003d0d8fc0 
> skb->data fffff8003d874cd0
> Nov 10 00:47:17 trad kernel: [ 8239.534092] 
> drivers/net/wireless/zd1211rw/zd_mac.c:390: skb fffff8003d0d8fc0 
> skb->data fffff8003d874cdb
> 
> Perhaps there needs to be some padding there?

Ok, after a long hard slog at trying to understand all this, I'm going 
to have to pause the effort. I am beginning to understand the mechanisms 
in place... however, I am not totally sure about anything. My first 
impression though is that before control is even passed to the driver 
via zd_op_tx(), alignment issues have already hit. As far as I could 
tell, at that stage skb->data can already be on an odd byte boundary.

Now, all this is very confusing to me... largely because I don't fully 
understand what an SKB is. However, it would seem to me that the 
sunlance driver would use this mechanism as well, and AFAICT, that 
driver (even if it isn't a wireless driver) does not suffer from 
alignment issues.

I have much digging left... but I would greatly appreciate the offering 
of opinions as to whether this problem lies deeper in the kernel than 
the zd1211rw driver itself. I get a sense that I'm being a little 
disengaged... but that's totally cool. I understand the onus of at least 
trying to contribute a fix myself.

 > Also, I've just had a look at the git version of zd_mac.c, and I notice
 > it is all change there again. I would feel uncomfortable having studied
 > the 2.6.26 code to have to start again. Is it expected that I use the
 > latest available via git?

Ignore that. I was looking at older code (via web git).
Thanks in advance,
Shaddy



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]                       ` <492F82EA.4030902@hotmail.com>
@ 2008-11-28  5:34                         ` Shaddy Baddah
  2008-11-28  7:10                           ` David Miller
  2008-11-28 22:44                           ` Michael Buesch
  0 siblings, 2 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-28  5:34 UTC (permalink / raw)
  To: linux-wireless

Hi,

On 2008-11-11 02:13, Shaddy Baddah wrote:
> Ok, after a long hard slog at trying to understand all this, I'm going 
> to have to pause the effort. I am beginning to understand the mechanisms 
> in place... however, I am not totally sure about anything. My first 

Devoting a little bit of time here and there to understanding the 
unaligned accesses, I think I understand a whole lot better now.

First off, I only came to realise that the reason the module seemed to 
continue operations despite reporting the unaligned access error was 
because the exception handler actually emulates the intended operation 
(albeit much slower). Good to know.

I then came to understand that we cannot expect alignment on RX in the 
zd1211rw module. In fact, we might expect that 80211 packets are always 
unaligned, because the 5 byte PLCP prefix in the SKB buffer will always 
push it into an odd address (assuming the SKB buffer is allocated 
aligned). In which case, as detailed in the 
Documentation/unaligned-memory-access.txt, replacing 
compare_ether_addr() with memcmp() is perfectly fine.

After solving that, I was still getting an unaligned access from a 
compare_ether_addr() call in sta_info_get() from mac80211 module. My 
dilemma was whether that module would expect alignment always, in which 
case the same simple function replacement would not be OK. But I saw 
several places where memcmp() is preferred to compare_ether_addr(), 
which I assume indicates that mac80211 does not expect alignment of 
80211 packets passed to it.

Applying Sebastian Andrzej Siewior wireless/zd1211rw: use 
get_unaligned_le16 helper (v2) patch and my two changes quietens down 
the kernel completely. I will submit these two patches in follow up emails.

It is interesting (at least to me) to note that a change between kernel 
versions 2.6.26 and 2.6.28-rc6 fixed something that allowed WPA2 to work 
on sparc64. At least according to my careful verification. Perhaps one 
day, I'll narrow that change down.

Regards,
Shaddy


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]       ` <492F856D.9020200@hotmail.com>
@ 2008-11-28  5:45         ` Shaddy Baddah
  2008-11-28  6:47         ` Harvey Harrison
  1 sibling, 0 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-28  5:45 UTC (permalink / raw)
  To: linux-wireless; +Cc: Sebastian Andrzej Siewior

On 25/10/08 22:28, Sebastian Andrzej Siewior wrote:
> Subject: [PATCH] wireless/zd1211rw: use  get_unaligned_le16 helper (v2)

I'm not too sure about the protocol for updating a patch to claim that 
you've verified it, but I hope to get this patch applied to git by 
verifying it worked for me on an sparc64 machine.

Subject: [PATCH] wireless/zd1211rw: use  get_unaligned_le16 helper (v2)

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tested-by: Shaddy Baddah <shaddy_badddah@hotmail.com>
---
  drivers/net/wireless/zd1211rw/zd_mac.c |    5 +++--
  drivers/net/wireless/zd1211rw/zd_usb.c |    2 +-
  2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c 
b/drivers/net/wireless/zd1211rw/zd_mac.c
index 4d7b98b..bf4b4a4 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -25,6 +25,7 @@
  #include <linux/usb.h>
  #include <linux/jiffies.h>
  #include <net/ieee80211_radiotap.h>
+#include <asm/unaligned.h>

  #include "zd_def.h"
  #include "zd_chip.h"
@@ -662,7 +663,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 
*buffer, unsigned int length)
  			&& !mac->pass_ctrl)
  		return 0;

-	fc = *(__le16 *)buffer;
+	fc = get_unaligned_le16(buffer);
  	need_padding = ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc);

  	skb = dev_alloc_skb(length + (need_padding ? 2 : 0));
@@ -758,7 +759,7 @@ void zd_process_intr(struct work_struct *work)
  	u16 int_status;
  	struct zd_mac *mac = container_of(work, struct zd_mac, process_intr);

-	int_status = le16_to_cpu(*(__le16 *)(mac->intr_buffer+4));
+	int_status = get_unaligned_le16(mac->intr_buffer+4);
  	if (int_status & INT_CFG_NEXT_BCN) {
  		if (net_ratelimit())
  			dev_dbg_f(zd_mac_dev(mac), "INT_CFG_NEXT_BCN\n");
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c 
b/drivers/net/wireless/zd1211rw/zd_usb.c
index a60ae86..0b27778 100644
--- a/drivers/net/wireless/zd1211rw/zd_usb.c
+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
@@ -355,7 +355,7 @@ static inline void handle_regs_int(struct urb *urb)
  	ZD_ASSERT(in_interrupt());
  	spin_lock(&intr->lock);

-	int_num = le16_to_cpu(*(__le16 *)(urb->transfer_buffer+2));
+	int_num = get_unaligned_le16(urb->transfer_buffer+2);
  	if (int_num == CR_INTERRUPT) {
  		struct zd_mac *mac = zd_hw_mac(zd_usb_to_hw(urb->context));
  		memcpy(&mac->intr_buffer, urb->transfer_buffer,
-- 1.6.0.2



^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]       ` <492F856D.9020200@hotmail.com>
  2008-11-28  5:45         ` Shaddy Baddah
@ 2008-11-28  6:47         ` Harvey Harrison
  1 sibling, 0 replies; 31+ messages in thread
From: Harvey Harrison @ 2008-11-28  6:47 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah; +Cc: Sebastian Andrzej Siewior

On Fri, 2008-11-28 at 16:45 +1100, Shaddy Baddah wrote:
> On 25/10/08 22:28, Sebastian Andrzej Siewior wrote:
> > Subject: [PATCH] wireless/zd1211rw: use  get_unaligned_le16 helper (v2)
> 
> I'm not too sure about the protocol for updating a patch to claim that 
> you've verified it, but I hope to get this patch applied to git by 
> verifying it worked for me on an sparc64 machine.
> 
> Subject: [PATCH] wireless/zd1211rw: use  get_unaligned_le16 helper (v2)
> 
> Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
> Tested-by: Shaddy Baddah <shaddy_badddah@hotmail.com>
> ---
>   drivers/net/wireless/zd1211rw/zd_mac.c |    5 +++--
>   drivers/net/wireless/zd1211rw/zd_usb.c |    2 +-
>   2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c 
> b/drivers/net/wireless/zd1211rw/zd_mac.c
> index 4d7b98b..bf4b4a4 100644
> --- a/drivers/net/wireless/zd1211rw/zd_mac.c
> +++ b/drivers/net/wireless/zd1211rw/zd_mac.c
> @@ -25,6 +25,7 @@
>   #include <linux/usb.h>
>   #include <linux/jiffies.h>
>   #include <net/ieee80211_radiotap.h>
> +#include <asm/unaligned.h>
> 
>   #include "zd_def.h"
>   #include "zd_chip.h"
> @@ -662,7 +663,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 
> *buffer, unsigned int length)
>   			&& !mac->pass_ctrl)
>   		return 0;
> 
> -	fc = *(__le16 *)buffer;
> +	fc = get_unaligned_le16(buffer);
>   	need_padding = ieee80211_is_data_qos(fc) ^ ieee80211_has_a4(fc);
> 

I think this should be:

	fc = get_unaligned((__le16 *)buffer);

As ieee8011_is_data_qos wants a le16 and your use above will swap to cpu-order.

> 
>   	skb = dev_alloc_skb(length + (need_padding ? 2 : 0));
> @@ -758,7 +759,7 @@ void zd_process_intr(struct work_struct *work)
>   	u16 int_status;
>   	struct zd_mac *mac = container_of(work, struct zd_mac, process_intr);
> 
> -	int_status = le16_to_cpu(*(__le16 *)(mac->intr_buffer+4));
> +	int_status = get_unaligned_le16(mac->intr_buffer+4);

OK.

>   	if (int_status & INT_CFG_NEXT_BCN) {
>   		if (net_ratelimit())
>   			dev_dbg_f(zd_mac_dev(mac), "INT_CFG_NEXT_BCN\n");
> diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c 
> b/drivers/net/wireless/zd1211rw/zd_usb.c
> index a60ae86..0b27778 100644
> --- a/drivers/net/wireless/zd1211rw/zd_usb.c
> +++ b/drivers/net/wireless/zd1211rw/zd_usb.c
> @@ -355,7 +355,7 @@ static inline void handle_regs_int(struct urb *urb)
>   	ZD_ASSERT(in_interrupt());
>   	spin_lock(&intr->lock);
> 
> -	int_num = le16_to_cpu(*(__le16 *)(urb->transfer_buffer+2));
> +	int_num = get_unaligned_le16(urb->transfer_buffer+2);
>   	if (int_num == CR_INTERRUPT) {
>   		struct zd_mac *mac = zd_hw_mac(zd_usb_to_hw(urb->context));
>   		memcpy(&mac->intr_buffer, urb->transfer_buffer,

OK.

So the first hunk needs changing, but other than that, looks OK.

Harvey


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-11-28  5:34                         ` Shaddy Baddah
@ 2008-11-28  7:10                           ` David Miller
  2008-11-28 22:44                           ` Michael Buesch
  1 sibling, 0 replies; 31+ messages in thread
From: David Miller @ 2008-11-28  7:10 UTC (permalink / raw)
  To: linux-wireless, shaddy_baddah

From: Shaddy Baddah <shaddy_baddah@hotmail.com>
Date: Fri, 28 Nov 2008 16:34:34 +1100

> It is interesting (at least to me) to note that a change between
> kernel versions 2.6.26 and 2.6.28-rc6 fixed something that allowed
> WPA2 to work on sparc64. At least according to my careful
> verification. Perhaps one day, I'll narrow that change down.

That would be the following set of changes:

commit 0f5cabba49021d36e9f76bd97d7fa0f4a408063f
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Jun 3 07:39:16 2008 -0700

    wext: Create IW_REQUEST_FLAG_COMPAT and set it as needed.
    
    Now low-level WEXT ioctl handlers can do compat handling
    when necessary.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 169a3ec492ddb6b0a8203fccba2ddff077154e26
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:55:13 2007 -0800

    wext: Remove compat handling from fs/compat_ioctl.c
    
    No longer used.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 87de87d5e47f94b4ea647a5bd1bc8dc1f7930db4
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Jun 3 09:14:03 2008 -0700

    wext: Dispatch and handle compat ioctls entirely in net/wireless/wext.c
    
    Next we can kill the hacks in fs/compat_ioctl.c and also
    dispatch compat ioctls down into the driver and 80211 protocol
    helper layers in order to handle iw_point objects embedded in
    stream replies which need to be translated.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit a67fa76d8be4e24e2d61cd76438a893d4c2886f7
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Jun 3 07:36:30 2008 -0700

    wext: Pull top-level ioctl dispatch logic into helper function.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d2911255590d9ca561a481b9dbebcfcbbf38fa4e
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:46:01 2007 -0800

    wext: Pass iwreq pointer down into standard/private handlers.
    
    They have no need to see the object as an ifreq.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit ca1e8bb8e4e89e2769e2b39eb29fdcfc5c19cf89
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:41:45 2007 -0800

    wext: Parameterize the standard/private handlers.
    
    The WEXT standard and private handlers to use are now
    arguments to wireless_process_ioctl().
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 67dd7608078b17f63f29ff2108fc5bf2407ddcec
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:36:31 2007 -0800

    wext: Pull ioctl permission checking out into helper function.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d88174e4d295f0880e5f9cb6d42f26b0367c8fd9
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:33:46 2007 -0800

    wext: Extract private call iw_point handling into seperate functions.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 84149b0fca08f9ec554dfc28dabc39839fdf8a06
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:27:17 2007 -0800

    wext: Extract standard call iw_point handling into seperate function.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 208887d4cc5a5c1eeb68bd170e21e32b1129cd94
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:24:24 2007 -0800

    wext: Make adjust_priv_size() take a "struct iw_point *".
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 25519a2a769d42fc2733a8f119682272d99b1304
Author: David S. Miller <davem@sunset.davemloft.net>
Date:   Fri Dec 21 03:22:38 2007 -0800

    wext: Remove inline from get_priv_size() and adjust_priv_size().
    
    The compiler inlines when appropriate.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>


^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
  2008-11-28  5:34                         ` Shaddy Baddah
  2008-11-28  7:10                           ` David Miller
@ 2008-11-28 22:44                           ` Michael Buesch
       [not found]                             ` <49310454.60906@hotmail.com>
  1 sibling, 1 reply; 31+ messages in thread
From: Michael Buesch @ 2008-11-28 22:44 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah

On Friday 28 November 2008 06:34:34 Shaddy Baddah wrote:
> case the same simple function replacement would not be OK. But I saw 
> several places where memcmp() is preferred to compare_ether_addr(), 
> which I assume indicates that mac80211 does not expect alignment of 
> 80211 packets passed to it.

The whole networking stack expects 4byte alignment and the driver _must_
make sure it is this way. Either by padding a constant number of bytes at the front
of each allocated SKB, or (if the alignment differs) use dynamic checks
for the lowest few bits of the pointer passed to mac80211.


-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]                             ` <49310454.60906@hotmail.com>
@ 2008-11-29  8:59                               ` Shaddy Baddah
  2008-11-29  9:50                               ` Johannes Berg
  1 sibling, 0 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-29  8:59 UTC (permalink / raw)
  To: Michael Buesch; +Cc: linux-wireless

On 29/11/08 09:44, Michael Buesch wrote:
> On Friday 28 November 2008 06:34:34 Shaddy Baddah wrote:
>> case the same simple function replacement would not be OK. But I saw 
>> several places where memcmp() is preferred to compare_ether_addr(), 
>> which I assume indicates that mac80211 does not expect alignment of 
>> 80211 packets passed to it.
> 
> The whole networking stack expects 4byte alignment and the driver _must_
> make sure it is this way. Either by padding a constant number of bytes at the front
> of each allocated SKB, or (if the alignment differs) use dynamic checks
> for the lowest few bits of the pointer passed to mac80211.

Right. But I'm not sure that in this case that the packet is being 
passed to mac80211 by the driver. My recall of the stack traces I saw 
were that the unalignment I was seeing in sta_info_get() were a 
consequence of transmission attempts.

I must admit though, I could not source where the unaligned packet came 
from, as I do not fully understand the different queuing mechanisms in 
use and where and how enqueues occur. My  limited efforts to understand 
this gave me the impression that network stack itself, and not the 
driver, was constructing these unaligned packets, for transmission.

The memcmp() that really persuaded me to believe that the mac80211 had 
no alignment requirements was this one:

net/mac80211/tx.c:1304:		if (memcmp(odev->dev_addr, hdr->addr4, 
ETH_ALEN) != 0)

I would have thought it would use compare_ether_addr() if we could 
safely assume alignment. In any case, say that alignment was always the 
intention... then can't we just use memcmp() as a hack (not being 
derogatory. Just that it would turn into a hack in deference to using 
compare_ether_addr()) consistent with hacks like the above? Even in the 
interim until a program to iron out alignment is set in place?

Regards,
Shaddy



^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]                             ` <49310454.60906@hotmail.com>
  2008-11-29  8:59                               ` Shaddy Baddah
@ 2008-11-29  9:50                               ` Johannes Berg
       [not found]                                 ` <49313C0E.9030309@hotmail.com>
  1 sibling, 1 reply; 31+ messages in thread
From: Johannes Berg @ 2008-11-29  9:50 UTC (permalink / raw)
  To: linux-wireless, Shaddy Baddah; +Cc: Michael Buesch

[-- Attachment #1: Type: text/plain, Size: 784 bytes --]

On Sat, 2008-11-29 at 19:59 +1100, Shaddy Baddah wrote:

> net/mac80211/tx.c:1304:		if (memcmp(odev->dev_addr, hdr->addr4, 
> ETH_ALEN) != 0)
> 
> I would have thought it would use compare_ether_addr() if we could 
> safely assume alignment.

You're looking at the TX path, that's irrelevant :)

>  In any case, say that alignment was always the 
> intention... then can't we just use memcmp() as a hack (not being 
> derogatory. Just that it would turn into a hack in deference to using 
> compare_ether_addr()) consistent with hacks like the above? Even in the 
> interim until a program to iron out alignment is set in place?

No, the IP stack assumes alignment. Besides, zd1211 actually enforces
the alignment before passing the skb off to mac80211.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx)
       [not found]                                 ` <49313C0E.9030309@hotmail.com>
@ 2008-11-29 12:56                                   ` Shaddy Baddah
  0 siblings, 0 replies; 31+ messages in thread
From: Shaddy Baddah @ 2008-11-29 12:56 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Michael Buesch

Hi,

On 29/11/08 20:50, Johannes Berg wrote:
> On Sat, 2008-11-29 at 19:59 +1100, Shaddy Baddah wrote:
> 
>> net/mac80211/tx.c:1304:		if (memcmp(odev->dev_addr, hdr->addr4, 
>> ETH_ALEN) != 0)
>>
>> I would have thought it would use compare_ether_addr() if we could 
>> safely assume alignment.
> 
> You're looking at the TX path, that's irrelevant :)

Do you mean by that the code that handles TX does not expect alignment?

I suspect I still missing some important point. But here it goes. 
Although the sta_info_get() function seems to be a more general purpose, 
the unaligned access is happening on TX. I found the stack trace:

Nov 22 19:04:43 trad kernel: [ 1459.328317]  [000000001039574c] 
__ieee80211_tx_prepare+0x288/0x3e8 [mac80211]
Nov 22 19:04:43 trad kernel: [ 1459.420571]  [0000000010398174] 
ieee80211_master_start_xmit+0x378/0x4f4 [mac80211]
Nov 22 19:04:43 trad kernel: [ 1459.518716]  [000000000061de88] 
dev_hard_start_xmit+0x210/0x2a0
Nov 22 19:04:43 trad kernel: [ 1459.596342]  [000000000062ff38] 
__qdisc_run+0xe4/0x220
Nov 22 19:04:43 trad kernel: [ 1459.664429]  [0000000000620c94] 
dev_queue_xmit+0x3dc/0x5d0
Nov 22 19:04:43 trad kernel: [ 1459.737359]  [000000001038ba10] 
ieee80211_associated+0x10c/0x154 [mac80211]
Nov 22 19:04:43 trad kernel: [ 1459.827398]  [000000001038dda0] 
ieee80211_sta_work+0xd50/0xe48 [mac80211]
Nov 22 19:04:43 trad kernel: [ 1459.915701]  [000000000045e584] 
run_workqueue+0x98/0x130
Nov 22 19:04:43 trad kernel: [ 1459.985658]  [000000000045ea30] 
worker_thread+0xa4/0xbc
Nov 22 19:04:43 trad kernel: [ 1460.054609]  [0000000000461d5c] 
kthread+0x3c/0x70
Nov 22 19:04:43 trad kernel: [ 1460.117894]  [0000000000426f84] 
kernel_thread+0x30/0x48
Nov 22 19:04:43 trad kernel: [ 1460.186919]  [0000000000461c18] 
kthreadd+0xb0/0x124

> No, the IP stack assumes alignment. Besides, zd1211 actually enforces
> the alignment before passing the skb off to mac80211.

You mean on RX, right? I'm OK on RX I think. The memcmp() is fine in 
filter_ack(), because it is on the raw packet that comes in from over 
USB which will always be unaligned (because of PLCP header, from the 
device itself). And it is before we actually memcpy() aligned into the 
skb buffer to pass to mac80211.

Perhaps I'm second guessing a little too much here, so I'll ask a simple 
question. Why do I get a 80211 packet passed into 
__ieee80211_tx_prepare() which is at an odd address in the skb buffer? I 
would have expected that they would have always been constructed aligned?

Thanks in advance,
Shaddy


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2008-11-29 12:56 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-25  8:54 zd1211rw (2.6.26 sparc64): unaligned access (zd_mac_rx) Shaddy Baddah
2008-10-25  9:17 ` Johannes Berg
2008-10-25 11:25   ` Sebastian Andrzej Siewior
2008-10-25 12:05     ` Johannes Berg
2008-10-26 22:00       ` Sebastian Andrzej Siewior
2008-10-27  7:00         ` Johannes Berg
2008-10-25 11:21 ` Sebastian Andrzej Siewior
2008-10-25 11:25   ` Michael Buesch
2008-10-25 11:28     ` Sebastian Andrzej Siewior
2008-10-25 11:31       ` Michael Buesch
2008-10-25 11:38         ` Sebastian Andrzej Siewior
2008-10-25 15:13       ` Shaddy Baddah
     [not found]         ` <491589ED.4090904@hotmail.com>
2008-11-08 12:45           ` Shaddy Baddah
2008-11-08 13:11           ` Johannes Berg
     [not found]             ` <491653A6.20705@hotmail.com>
2008-11-09  3:06               ` Shaddy Baddah
     [not found]                 ` <49165436.4040306@hotmail.com>
2008-11-09  3:08                   ` Shaddy Baddah
2008-11-09 12:00                 ` Michael Buesch
2008-11-09  8:56               ` Johannes Berg
2008-11-09  9:03                 ` Johannes Berg
2008-11-09 12:02                   ` Michael Buesch
2008-11-09 18:31                     ` Johannes Berg
     [not found]                 ` <4916F1C0.1040703@hotmail.com>
2008-11-09 14:20                   ` Shaddy Baddah
     [not found]                   ` <49184F82.9070102@hotmail.com>
2008-11-10 15:13                     ` Shaddy Baddah
     [not found]                       ` <492F82EA.4030902@hotmail.com>
2008-11-28  5:34                         ` Shaddy Baddah
2008-11-28  7:10                           ` David Miller
2008-11-28 22:44                           ` Michael Buesch
     [not found]                             ` <49310454.60906@hotmail.com>
2008-11-29  8:59                               ` Shaddy Baddah
2008-11-29  9:50                               ` Johannes Berg
     [not found]                                 ` <49313C0E.9030309@hotmail.com>
2008-11-29 12:56                                   ` Shaddy Baddah
     [not found]       ` <492F856D.9020200@hotmail.com>
2008-11-28  5:45         ` Shaddy Baddah
2008-11-28  6:47         ` Harvey Harrison

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).