summaryrefslogtreecommitdiff
path: root/patches
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2013-03-30 00:53:58 +0100
committerJohannes Berg <johannes@sipsolutions.net>2013-03-30 01:06:36 +0100
commit44706a520f6527c67e7f8b741812f11464babda2 (patch)
treeceba8de9f18d05fea9bb4d337391ed79a2bc7cf4 /patches
parent5bf870f42dc0cf3e31522e05119c0a8f993a280e (diff)
split patches
This splits all patches into per-file patches. I've added the little tool I wrote as well (but it's hard to use). Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Diffstat (limited to 'patches')
-rw-r--r--patches/collateral-evolutions/drm/0001-fb-info-vt_switch/INFO (renamed from patches/collateral-evolutions/drm/0001-fb-info-vt_switch.patch)11
-rw-r--r--patches/collateral-evolutions/drm/0001-fb-info-vt_switch/drivers_gpu_drm_i915_intel_fb.c11
-rw-r--r--patches/collateral-evolutions/drm/01-dma_buf_ops-addition.patch41
-rw-r--r--patches/collateral-evolutions/drm/01-dma_buf_ops-addition/INFO10
-rw-r--r--patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_drm_prime.c14
-rw-r--r--patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_i915_i915_gem_dmabuf.c17
-rw-r--r--patches/collateral-evolutions/drm/02-revert-vm_mmap.patch94
-rw-r--r--patches/collateral-evolutions/drm/02-revert-vm_mmap/INFO5
-rw-r--r--patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_drm_bufs.c31
-rw-r--r--patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i810_i810_dma.c37
-rw-r--r--patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i915_i915_gem.c21
-rw-r--r--patches/collateral-evolutions/drm/03-swiotlb.patch83
-rw-r--r--patches/collateral-evolutions/drm/03-swiotlb/INFO5
-rw-r--r--patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_nouveau_nouveau_bo.c31
-rw-r--r--patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_radeon_radeon_ttm.c47
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support.patch347
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/INFO8
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_drv.c13
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_fops.c24
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_gem.c28
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_prime.c16
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_drv.c27
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem.c23
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem_dmabuf.c15
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_bo.c38
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_drm.c30
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_gem.c13
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_prime.c16
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_drv.c31
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_gem.c13
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_prime.c15
-rw-r--r--patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_ttm.c37
-rw-r--r--patches/collateral-evolutions/drm/05-i915-define-acpi-video-class/INFO4
-rw-r--r--patches/collateral-evolutions/drm/05-i915-define-acpi-video-class/drivers_gpu_drm_i915_intel_opregion.c (renamed from patches/collateral-evolutions/drm/05-i915-define-acpi-video-class.patch)6
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options.patch207
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_Makefile72
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ast_Makefile9
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_cirrus_Makefile8
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_drm_crtc_helper.c11
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_gma500_Makefile8
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i2c_Makefile16
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i810_Makefile8
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i915_Makefile10
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_mgag200_Makefile8
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_Makefile12
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_nouveau_display.h11
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_radeon_Makefile10
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ttm_Makefile8
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_via_Makefile8
-rw-r--r--patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_vmwgfx_Makefile8
-rw-r--r--patches/collateral-evolutions/drm/07-intel-gtt/INFO (renamed from patches/collateral-evolutions/drm/07-intel-gtt.patch)18
-rw-r--r--patches/collateral-evolutions/drm/07-intel-gtt/drivers_gpu_drm_i915_i915_gem.c18
-rw-r--r--patches/collateral-evolutions/drm/08-shmem_truncate_range/INFO (renamed from patches/collateral-evolutions/drm/08-shmem_truncate_range.patch)16
-rw-r--r--patches/collateral-evolutions/drm/08-shmem_truncate_range/drivers_gpu_drm_i915_i915_gem.c16
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars.patch153
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/INFO3
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_core_option.c11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_client.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_device.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engctx.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engine.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_gpuobj.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_namedb.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_object.h20
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_parent.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_printk.h20
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_subdev.h11
-rw-r--r--patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_subdev_instmem.h11
-rw-r--r--patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check/INFO3
-rw-r--r--patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check/drivers_gpu_drm_radeon_radeon_bios.c (renamed from patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check.patch)5
-rw-r--r--patches/collateral-evolutions/drm/11-videomode-includes/drivers_gpu_drm_drm_modes.c (renamed from patches/collateral-evolutions/drm/11-videomode-includes.patch)0
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt.patch189
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/INFO6
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_drm_fb_helper.c14
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_dma.c18
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_irq.c13
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_opregion.c13
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_panel.c13
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_agp_backend.c13
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo.c16
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo_vm.c13
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_memory.c16
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_object.c15
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc.c13
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc_dma.c13
-rw-r--r--patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_tt.c13
-rw-r--r--patches/collateral-evolutions/drm/99-change-makefile/INFO2
-rw-r--r--patches/collateral-evolutions/drm/99-change-makefile/drivers_gpu_drm_Makefile (renamed from patches/collateral-evolutions/drm/99-change-makefile.patch)4
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops.patch290
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/INFO38
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1e_atl1e_main.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl1.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl2.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_broadcom_b44.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_rndis_host.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_usbnet.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_ath6kl_main.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_wil6210_netdev.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2100.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2200.c20
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_main.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_mesh.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mac80211_hwsim.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mwifiex_main.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_orinoco_main.c14
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_rndis_wlan.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/net_bluetooth_bnep_netdev.c11
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/net_mac80211_iface.c29
-rw-r--r--patches/collateral-evolutions/network/0001-netdev_ops/net_wireless_wext-core.c13
-rw-r--r--patches/collateral-evolutions/network/0002-net-misc.patch68
-rw-r--r--patches/collateral-evolutions/network/0002-net-misc/INFO8
-rw-r--r--patches/collateral-evolutions/network/0002-net-misc/drivers_net_usb_rndis_host.c14
-rw-r--r--patches/collateral-evolutions/network/0002-net-misc/drivers_net_wireless_libertas_defs.h17
-rw-r--r--patches/collateral-evolutions/network/0002-net-misc/net_bluetooth_bnep_netdev.c15
-rw-r--r--patches/collateral-evolutions/network/0002-net-misc/net_mac80211_iface.c14
-rw-r--r--patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom.patch36
-rw-r--r--patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/INFO4
-rw-r--r--patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/drivers_net_wireless_orinoco_main.c14
-rw-r--r--patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/net_mac80211_iface.c18
-rw-r--r--patches/collateral-evolutions/network/0004-wext-namespace/INFO4
-rw-r--r--patches/collateral-evolutions/network/0004-wext-namespace/net_wireless_wext-core.c (renamed from patches/collateral-evolutions/network/0004-wext-namespace.patch)10
-rw-r--r--patches/collateral-evolutions/network/0005-netlink-portid/INFO42
-rw-r--r--patches/collateral-evolutions/network/0005-netlink-portid/drivers_net_wireless_mac80211_hwsim.c24
-rw-r--r--patches/collateral-evolutions/network/0005-netlink-portid/net_wireless_nl80211.c (renamed from patches/collateral-evolutions/network/0005-netlink-portid.patch)118
-rw-r--r--patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels/INFO (renamed from patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels.patch)18
-rw-r--r--patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels/net_wireless_nl80211.c18
-rw-r--r--patches/collateral-evolutions/network/02-ksize/INFO12
-rw-r--r--patches/collateral-evolutions/network/02-ksize/drivers_net_wireless_orinoco_wext.c (renamed from patches/collateral-evolutions/network/02-ksize.patch)14
-rw-r--r--patches/collateral-evolutions/network/03-rfkill.patch66
-rw-r--r--patches/collateral-evolutions/network/03-rfkill/INFO30
-rw-r--r--patches/collateral-evolutions/network/03-rfkill/net_rfkill_Makefile14
-rw-r--r--patches/collateral-evolutions/network/03-rfkill/net_rfkill_core.c11
-rw-r--r--patches/collateral-evolutions/network/03-rfkill/net_rfkill_input.c11
-rw-r--r--patches/collateral-evolutions/network/04-netns.patch149
-rw-r--r--patches/collateral-evolutions/network/04-netns/INFO6
-rw-r--r--patches/collateral-evolutions/network/04-netns/net_wireless_core.c86
-rw-r--r--patches/collateral-evolutions/network/04-netns/net_wireless_nl80211.c12
-rw-r--r--patches/collateral-evolutions/network/04-netns/net_wireless_wext-core.c31
-rw-r--r--patches/collateral-evolutions/network/04-netns/net_wireless_wext-proc.c14
-rw-r--r--patches/collateral-evolutions/network/05-usb.patch26
-rw-r--r--patches/collateral-evolutions/network/05-usb/INFO2
-rw-r--r--patches/collateral-evolutions/network/05-usb/drivers_net_wireless_ath_ath9k_hif_usb.c12
-rw-r--r--patches/collateral-evolutions/network/05-usb/drivers_net_wireless_p54_p54usb.c12
-rw-r--r--patches/collateral-evolutions/network/06-header-changes.patch176
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/INFO6
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_cfg80211.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_htc_pipe.c13
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_b43_phy_common.h12
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_mwifiex_usb.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_rtlwifi_base.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_main.c12
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_spi.c12
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_event.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_scan.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/include_net_mac80211.h10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/net_bluetooth_bnep_sock.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hci_sock.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hidp_sock.c10
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/net_mac80211_key.c12
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/net_mac80211_pm.c9
-rw-r--r--patches/collateral-evolutions/network/06-header-changes/net_wireless_util.c10
-rw-r--r--patches/collateral-evolutions/network/07-change-default-rate-alg/INFO12
-rw-r--r--patches/collateral-evolutions/network/07-change-default-rate-alg/net_mac80211_rate.c (renamed from patches/collateral-evolutions/network/07-change-default-rate-alg.patch)16
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options.patch192
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/INFO21
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_Makefile25
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_Makefile11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_init.c11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_rc.h11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_Makefile11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_common.h11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_libertas_Makefile9
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_mwifiex_Makefile11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ti_wl1251_Makefile12
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_zd1211rw_Makefile8
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/include_net_bluetooth_rfcomm.h11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_Makefile11
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_hidp_Makefile10
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_Makefile8
-rw-r--r--patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_sock.c11
-rw-r--r--patches/collateral-evolutions/network/09-cfg80211-wext-padding.patch62
-rw-r--r--patches/collateral-evolutions/network/09-cfg80211-wext-padding/INFO30
-rw-r--r--patches/collateral-evolutions/network/09-cfg80211-wext-padding/include_net_cfg80211.h12
-rw-r--r--patches/collateral-evolutions/network/09-cfg80211-wext-padding/net_wireless_core.c20
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq.patch181
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq/INFO6
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_b43.h12
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_main.c45
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_internal.h12
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_trans.c41
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_main.c52
-rw-r--r--patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_wlcore.h13
-rw-r--r--patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev/INFO18
-rw-r--r--patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev/net_wireless_core.c (renamed from patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev.patch)22
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops.patch379
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/INFO9
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_bcma_host_pci.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atlx_atl1.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath5k_pci.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath9k_pci.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_3945-mac.c15
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_4965-mac.c15
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.c20
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.h17
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlwifi_pcie_drv.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_libertas_if_spi.c28
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_p54_p54pci.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192ce_sw.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192de_sw.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192se_sw.c25
-rw-r--r--patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8723ae_sw.c25
-rw-r--r--patches/collateral-evolutions/network/12-iw_handler-changes/drivers_net_wireless_ipw2x00_ipw2100.c (renamed from patches/collateral-evolutions/network/12-iw_handler-changes.patch)2
-rw-r--r--patches/collateral-evolutions/network/12-mac80211-disable-tx-status/INFO6
-rw-r--r--patches/collateral-evolutions/network/12-mac80211-disable-tx-status/net_mac80211_tx.c (renamed from patches/collateral-evolutions/network/12-mac80211-disable-tx-status.patch)10
-rw-r--r--patches/collateral-evolutions/network/14-device-type.patch56
-rw-r--r--patches/collateral-evolutions/network/14-device-type/INFO8
-rw-r--r--patches/collateral-evolutions/network/14-device-type/drivers_net_usb_usbnet.c20
-rw-r--r--patches/collateral-evolutions/network/14-device-type/net_bluetooth_bnep_core.c14
-rw-r--r--patches/collateral-evolutions/network/14-device-type/net_wireless_core.c14
-rw-r--r--patches/collateral-evolutions/network/15-symbol-export-conflicts/INFO3
-rw-r--r--patches/collateral-evolutions/network/15-symbol-export-conflicts/net_mac80211_rx.c (renamed from patches/collateral-evolutions/network/15-symbol-export-conflicts.patch)5
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth.patch575
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/INFO3
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/drivers_bluetooth_hci_ldisc.c28
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_af_bluetooth.c39
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_bnep_sock.c15
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_capi.c14
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_sock.c15
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sock.c29
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sysfs.c38
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_core.c220
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_sock.c15
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_l2cap_sock.c41
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_sock.c28
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_tty.c63
-rw-r--r--patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_sco.c27
-rw-r--r--patches/collateral-evolutions/network/17-netdev-queue/INFO14
-rw-r--r--patches/collateral-evolutions/network/17-netdev-queue/net_mac80211_iface.c (renamed from patches/collateral-evolutions/network/17-netdev-queue.patch)18
-rw-r--r--patches/collateral-evolutions/network/18-rename-usb-net-symbols.patch53
-rw-r--r--patches/collateral-evolutions/network/18-rename-usb-net-symbols/INFO6
-rw-r--r--patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_Makefile25
-rw-r--r--patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_cdc_ether.c11
-rw-r--r--patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_wireless_Makefile11
-rw-r--r--patches/collateral-evolutions/network/21-capi-proc_fops/INFO3
-rw-r--r--patches/collateral-evolutions/network/21-capi-proc_fops/net_bluetooth_cmtp_capi.c (renamed from patches/collateral-evolutions/network/21-capi-proc_fops.patch)9
-rw-r--r--patches/collateral-evolutions/network/22-multiqueue/INFO (renamed from patches/collateral-evolutions/network/22-multiqueue.patch)13
-rw-r--r--patches/collateral-evolutions/network/22-multiqueue/net_mac80211_tx.c13
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia.patch1414
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bluecard_cs.c191
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bt3c_cs.c180
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_btuart_cs.c204
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_dtl1_cs.c178
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_b43_pcmcia.c82
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_libertas_if_cs.c163
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_orinoco_cs.c207
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_spectrum_cs.c195
-rw-r--r--patches/collateral-evolutions/network/24-pcmcia/drivers_ssb_main.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head.patch872
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/INFO13
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_adm8211.c41
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath5k_mac80211-ops.c55
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.c38
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_carl9170_main.c38
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.c37
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_tf_main.c39
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwl8k.c88
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.h12
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_p54_main.c45
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.c14
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8180_dev.c22
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8187_dev.c20
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ti_wlcore_main.c64
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_zd1211rw_zd_mac.c37
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/include_net_mac80211.h27
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.c16
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_driver-ops.h62
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_ieee80211_i.h15
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_iface.c37
-rw-r--r--patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_main.c26
-rw-r--r--patches/collateral-evolutions/network/26-sdio-quirks.patch32
-rw-r--r--patches/collateral-evolutions/network/26-sdio-quirks/INFO2
-rw-r--r--patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_libertas_if_sdio.c18
-rw-r--r--patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_mwifiex_sdio.c12
-rw-r--r--patches/collateral-evolutions/network/27-hermes-read-pda-conflict.patch56
-rw-r--r--patches/collateral-evolutions/network/27-hermes-read-pda-conflict/INFO3
-rw-r--r--patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_fw.c20
-rw-r--r--patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.c11
-rw-r--r--patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.h11
-rw-r--r--patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_orinoco_usb.c11
-rw-r--r--patches/collateral-evolutions/network/29-sdio_no_suspend.patch199
-rw-r--r--patches/collateral-evolutions/network/29-sdio_no_suspend/INFO5
-rw-r--r--patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_bluetooth_btmrvl_sdio.c28
-rw-r--r--patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_ath_ath6kl_sdio.c47
-rw-r--r--patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_brcm80211_brcmfmac_bcmsdh_sdmmc.c38
-rw-r--r--patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_libertas_if_sdio.c29
-rw-r--r--patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_mwifiex_sdio.c52
-rw-r--r--patches/collateral-evolutions/network/30-bridge-port/INFO (renamed from patches/collateral-evolutions/network/30-bridge-port.patch)22
-rw-r--r--patches/collateral-evolutions/network/30-bridge-port/net_wireless_nl80211.c11
-rw-r--r--patches/collateral-evolutions/network/30-bridge-port/net_wireless_util.c11
-rw-r--r--patches/collateral-evolutions/network/32-remove-ns-type/net_wireless_sysfs.c (renamed from patches/collateral-evolutions/network/32-remove-ns-type.patch)4
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes.patch71
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes/INFO4
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmfmac_Makefile13
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmsmac_Makefile15
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmutil_Makefile13
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8180_Makefile8
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8187_Makefile8
-rw-r--r--patches/collateral-evolutions/network/35-fix-makefile-includes/net_wireless_Makefile10
-rw-r--r--patches/collateral-evolutions/network/36-workqueue/INFO3
-rw-r--r--patches/collateral-evolutions/network/36-workqueue/net_mac80211_main.c (renamed from patches/collateral-evolutions/network/36-workqueue.patch)5
-rw-r--r--patches/collateral-evolutions/network/37-vsnprintk/drivers_net_wireless_ath_main.c (renamed from patches/collateral-evolutions/network/37-vsnprintk.patch)4
-rw-r--r--patches/collateral-evolutions/network/38-led-max-brightness.patch36
-rw-r--r--patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlegacy_common.c12
-rw-r--r--patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_dvm_led.c12
-rw-r--r--patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_mvm_led.c12
-rw-r--r--patches/collateral-evolutions/network/39-remove_blink_set.patch56
-rw-r--r--patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlegacy_common.c28
-rw-r--r--patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlwifi_dvm_led.c28
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features.patch372
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/INFO20
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_ethtool.c28
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_main.c72
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_ethtool.c14
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_main.c57
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl1.c53
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl2.c71
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atlx.c17
-rw-r--r--patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_wireless_ath_ath6kl_main.c40
-rw-r--r--patches/collateral-evolutions/network/42-netlink_seq/net_wireless_nl80211.c (renamed from patches/collateral-evolutions/network/42-netlink_seq.patch)2
-rw-r--r--patches/collateral-evolutions/network/43-rename_pm_qos_request/drivers_net_wireless_ipw2x00_ipw2100.c (renamed from patches/collateral-evolutions/network/43-rename_pm_qos_request.patch)2
-rw-r--r--patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/INFO2
-rw-r--r--patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/net_mac80211_Makefile13
-rw-r--r--patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/net_wireless_Makefile (renamed from patches/collateral-evolutions/network/44-deactivate-mac80211-tracing.patch)17
-rw-r--r--patches/collateral-evolutions/network/45-remove-platform-id-table/drivers_net_wireless_ti_wl12xx_main.c (renamed from patches/collateral-evolutions/network/45-remove-platform-id-table.patch)2
-rw-r--r--patches/collateral-evolutions/network/46-use_other_workqueue/INFO4
-rw-r--r--patches/collateral-evolutions/network/46-use_other_workqueue/net_bluetooth_hci_core.c (renamed from patches/collateral-evolutions/network/46-use_other_workqueue.patch)6
-rw-r--r--patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue/INFO4
-rw-r--r--patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue/drivers_net_wireless_mwifiex_init.c (renamed from patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue.patch)6
-rw-r--r--patches/collateral-evolutions/network/48-use_skb_get_queue_mapping.patch38
-rw-r--r--patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/INFO4
-rw-r--r--patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43_main.c17
-rw-r--r--patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43legacy_main.c17
-rw-r--r--patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup/INFO5
-rw-r--r--patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup/drivers_net_wireless_libertas_if_usb.c (renamed from patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup.patch)9
-rw-r--r--patches/collateral-evolutions/network/52-tty-dev/INFO (renamed from patches/collateral-evolutions/network/52-tty-dev.patch)13
-rw-r--r--patches/collateral-evolutions/network/52-tty-dev/drivers_bluetooth_hci_ldisc.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt.patch715
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/INFO3
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_bcma_bcma_private.h15
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_ethernet_broadcom_b44.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_ani.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_attach.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_base.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_debug.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_desc.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_dma.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_eeprom.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_initvals.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_led.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_mac80211-ops.c17
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_pci.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_phy.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_qcu.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_reset.c15
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_sysfs.c10
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_cfg80211.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_init.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_main.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_txrx.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_drv_init.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_hst.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_init.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_pci.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_main.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_regd.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_aiutils.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_mac80211_if.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_main.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_phy_phy_n.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmutil_utils.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_3945-mac.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_4965-mac.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_dvm_main.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_pcie_drv.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_cfg.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_cs.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_sdio.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_spi.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_usb.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_main.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_mesh.c10
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_rx.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_cmd.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_if_usb.c16
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_main.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_rtlwifi_wifi.h13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/net_bluetooth_lib.c14
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/net_wireless_core.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211_crypt_tkip.c13
-rw-r--r--patches/collateral-evolutions/network/53-pr_fmt/net_wireless_reg.c14
-rw-r--r--patches/collateral-evolutions/network/54-get_ts_info/INFO (renamed from patches/collateral-evolutions/network/54-get_ts_info.patch)12
-rw-r--r--patches/collateral-evolutions/network/54-get_ts_info/drivers_net_usb_usbnet.c12
-rw-r--r--patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix/INFO5
-rw-r--r--patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix/drivers_net_wireless_iwlwifi_iwl-debug.c (renamed from patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix.patch)11
-rw-r--r--patches/collateral-evolutions/network/56-mac80211-trace-fix/net_mac80211_trace.c (renamed from patches/collateral-evolutions/network/56-mac80211-trace-fix.patch)8
-rw-r--r--patches/collateral-evolutions/network/57-iwlwifi-debug-fix/INFO5
-rw-r--r--patches/collateral-evolutions/network/57-iwlwifi-debug-fix/drivers_net_wireless_iwlwifi_iwl-debug.c (renamed from patches/collateral-evolutions/network/57-iwlwifi-debug-fix.patch)7
-rw-r--r--patches/collateral-evolutions/network/61-netdev-addr_assign_type.patch31
-rw-r--r--patches/collateral-evolutions/network/61-netdev-addr_assign_type/INFO7
-rw-r--r--patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atl1c_atl1c_main.c12
-rw-r--r--patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atlx_atl1.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm.patch276
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_ath3k.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bcm203x.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bfusb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bpa10x.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_btusb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_cdc_ether.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_rndis_host.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_at76c50x-usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath6kl_usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath9k_hif_usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_carl9170_usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_brcm80211_brcmfmac_usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_if_usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_tf_if_usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_orinoco_orinoco_usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_p54_p54usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rndis_wlan.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2500usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2800usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt73usb.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtl818x_rtl8187_dev.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtlwifi_rtl8192cu_sw.c12
-rw-r--r--patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_zd1211rw_zd_usb.c12
-rw-r--r--patches/collateral-evolutions/network/63-tty-termios.patch49
-rw-r--r--patches/collateral-evolutions/network/63-tty-termios/INFO21
-rw-r--r--patches/collateral-evolutions/network/63-tty-termios/drivers_bluetooth_hci_ath.c14
-rw-r--r--patches/collateral-evolutions/network/63-tty-termios/net_bluetooth_rfcomm_tty.c14
-rw-r--r--patches/collateral-evolutions/network/64-b44-32bit-stats/INFO14
-rw-r--r--patches/collateral-evolutions/network/64-b44-32bit-stats/drivers_net_ethernet_broadcom_b44.c (renamed from patches/collateral-evolutions/network/64-b44-32bit-stats.patch)18
-rw-r--r--patches/collateral-evolutions/network/65-ignore-dismantle/INFO9
-rw-r--r--patches/collateral-evolutions/network/65-ignore-dismantle/drivers_net_wireless_libertas_main.c (renamed from patches/collateral-evolutions/network/65-ignore-dismantle.patch)11
-rw-r--r--patches/collateral-evolutions/network/66-uapi-changes/INFO (renamed from patches/collateral-evolutions/network/66-uapi-changes.patch)11
-rw-r--r--patches/collateral-evolutions/network/66-uapi-changes/include_linux_rfkill_backport.h11
-rw-r--r--patches/collateral-evolutions/network/67-fix-section-mismatch/drivers_net_wireless_ath_ath5k_led.c (renamed from patches/collateral-evolutions/network/67-fix-section-mismatch.patch)0
-rw-r--r--patches/collateral-evolutions/network/67-ipv6-dev-list/INFO8
-rw-r--r--patches/collateral-evolutions/network/67-ipv6-dev-list/drivers_net_wireless_iwlwifi_mvm_d3.c (renamed from patches/collateral-evolutions/network/67-ipv6-dev-list.patch)10
-rw-r--r--patches/collateral-evolutions/network/69-wowlan-no-socket/INFO2
-rw-r--r--patches/collateral-evolutions/network/69-wowlan-no-socket/net_wireless_nl80211.c (renamed from patches/collateral-evolutions/network/69-wowlan-no-socket.patch)4
-rw-r--r--patches/collateral-evolutions/network/70-umode_t-api-change.patch28
-rw-r--r--patches/collateral-evolutions/network/70-umode_t-api-change/drivers_gpu_drm_drm_sysfs.c14
-rw-r--r--patches/collateral-evolutions/network/70-umode_t-api-change/drivers_net_wireless_ath_ath9k_debug.c14
-rw-r--r--patches/collateral-evolutions/network/71-bin_attribute-api-change/drivers_net_wireless_ti_wlcore_main.c (renamed from patches/collateral-evolutions/network/71-bin_attribute-api-change.patch)2
-rw-r--r--patches/collateral-evolutions/network/99-change-makefiles.patch102
-rw-r--r--patches/collateral-evolutions/network/99-change-makefiles/INFO5
-rw-r--r--patches/collateral-evolutions/network/99-change-makefiles/drivers_misc_eeprom_Makefile10
-rw-r--r--patches/collateral-evolutions/network/99-change-makefiles/drivers_net_usb_Makefile38
-rw-r--r--patches/collateral-evolutions/network/99-change-makefiles/drivers_net_wireless_Makefile35
-rw-r--r--patches/collateral-evolutions/network/99-change-makefiles/net_wireless_Makefile14
472 files changed, 8198 insertions, 8198 deletions
diff --git a/patches/collateral-evolutions/drm/0001-fb-info-vt_switch.patch b/patches/collateral-evolutions/drm/0001-fb-info-vt_switch/INFO
index ae1b2cb3..cb9dd679 100644
--- a/patches/collateral-evolutions/drm/0001-fb-info-vt_switch.patch
+++ b/patches/collateral-evolutions/drm/0001-fb-info-vt_switch/INFO
@@ -42,14 +42,3 @@ Date: Tue Mar 26 09:25:45 2013 -0700
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---- a/drivers/gpu/drm/i915/intel_fb.c
-+++ b/drivers/gpu/drm/i915/intel_fb.c
-@@ -151,7 +151,7 @@ static int intelfb_create(struct drm_fb_
- info->screen_size = size;
-
- /* This driver doesn't need a VT switch to restore the mode on resume */
-- info->skip_vt_switch = true;
-+ fb_enable_skip_vt_switch(info);
-
- drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth);
- drm_fb_helper_fill_var(info, &ifbdev->helper, sizes->fb_width, sizes->fb_height);
diff --git a/patches/collateral-evolutions/drm/0001-fb-info-vt_switch/drivers_gpu_drm_i915_intel_fb.c b/patches/collateral-evolutions/drm/0001-fb-info-vt_switch/drivers_gpu_drm_i915_intel_fb.c
new file mode 100644
index 00000000..2038f562
--- /dev/null
+++ b/patches/collateral-evolutions/drm/0001-fb-info-vt_switch/drivers_gpu_drm_i915_intel_fb.c
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/i915/intel_fb.c
++++ b/drivers/gpu/drm/i915/intel_fb.c
+@@ -151,7 +151,7 @@
+ info->screen_size = size;
+
+ /* This driver doesn't need a VT switch to restore the mode on resume */
+- info->skip_vt_switch = true;
++ fb_enable_skip_vt_switch(info);
+
+ drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth);
+ drm_fb_helper_fill_var(info, &ifbdev->helper, sizes->fb_width, sizes->fb_height);
diff --git a/patches/collateral-evolutions/drm/01-dma_buf_ops-addition.patch b/patches/collateral-evolutions/drm/01-dma_buf_ops-addition.patch
deleted file mode 100644
index 3493e12b..00000000
--- a/patches/collateral-evolutions/drm/01-dma_buf_ops-addition.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Assign vmap, vunmap and mmap fields in dma_buf_ops structs only
-if kernel version >= 3.5.0 as they are added in 3.5. The begin_cpu_access
-was added as of the original dma-buf code via 3.4.
-
-mcgrof@frijol ~/linux-next (git::master)$ git describe --contains fc13020e086bfedf2afb95c91c026d5af1f80107
-v3.4-rc1~57^2~3
-
-Note that the dma-buf itself was added with 3.4. It is not available
-on kernels < 3.4.
-
---- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
-+++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
-@@ -216,10 +216,14 @@ static const struct dma_buf_ops i915_dma
- .kmap_atomic = i915_gem_dmabuf_kmap_atomic,
- .kunmap = i915_gem_dmabuf_kunmap,
- .kunmap_atomic = i915_gem_dmabuf_kunmap_atomic,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .mmap = i915_gem_dmabuf_mmap,
- .vmap = i915_gem_dmabuf_vmap,
- .vunmap = i915_gem_dmabuf_vunmap,
-+#endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- .begin_cpu_access = i915_gem_begin_cpu_access,
-+#endif
- };
-
- struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
---- a/drivers/gpu/drm/drm_prime.c
-+++ b/drivers/gpu/drm/drm_prime.c
-@@ -152,9 +152,11 @@ static const struct dma_buf_ops drm_gem_
- .kmap_atomic = drm_gem_dmabuf_kmap_atomic,
- .kunmap = drm_gem_dmabuf_kunmap,
- .kunmap_atomic = drm_gem_dmabuf_kunmap_atomic,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .mmap = drm_gem_dmabuf_mmap,
- .vmap = drm_gem_dmabuf_vmap,
- .vunmap = drm_gem_dmabuf_vunmap,
-+#endif
- };
-
- /**
diff --git a/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/INFO b/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/INFO
new file mode 100644
index 00000000..d46c6b1b
--- /dev/null
+++ b/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/INFO
@@ -0,0 +1,10 @@
+Assign vmap, vunmap and mmap fields in dma_buf_ops structs only
+if kernel version >= 3.5.0 as they are added in 3.5. The begin_cpu_access
+was added as of the original dma-buf code via 3.4.
+
+mcgrof@frijol ~/linux-next (git::master)$ git describe --contains fc13020e086bfedf2afb95c91c026d5af1f80107
+v3.4-rc1~57^2~3
+
+Note that the dma-buf itself was added with 3.4. It is not available
+on kernels < 3.4.
+
diff --git a/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_drm_prime.c b/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_drm_prime.c
new file mode 100644
index 00000000..cb332cac
--- /dev/null
+++ b/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_drm_prime.c
@@ -0,0 +1,14 @@
+--- a/drivers/gpu/drm/drm_prime.c
++++ b/drivers/gpu/drm/drm_prime.c
+@@ -152,9 +152,11 @@
+ .kmap_atomic = drm_gem_dmabuf_kmap_atomic,
+ .kunmap = drm_gem_dmabuf_kunmap,
+ .kunmap_atomic = drm_gem_dmabuf_kunmap_atomic,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .mmap = drm_gem_dmabuf_mmap,
+ .vmap = drm_gem_dmabuf_vmap,
+ .vunmap = drm_gem_dmabuf_vunmap,
++#endif
+ };
+
+ /**
diff --git a/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_i915_i915_gem_dmabuf.c b/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_i915_i915_gem_dmabuf.c
new file mode 100644
index 00000000..48a25377
--- /dev/null
+++ b/patches/collateral-evolutions/drm/01-dma_buf_ops-addition/drivers_gpu_drm_i915_i915_gem_dmabuf.c
@@ -0,0 +1,17 @@
+--- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
++++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
+@@ -216,10 +216,14 @@
+ .kmap_atomic = i915_gem_dmabuf_kmap_atomic,
+ .kunmap = i915_gem_dmabuf_kunmap,
+ .kunmap_atomic = i915_gem_dmabuf_kunmap_atomic,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .mmap = i915_gem_dmabuf_mmap,
+ .vmap = i915_gem_dmabuf_vmap,
+ .vunmap = i915_gem_dmabuf_vunmap,
++#endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ .begin_cpu_access = i915_gem_begin_cpu_access,
++#endif
+ };
+
+ struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
diff --git a/patches/collateral-evolutions/drm/02-revert-vm_mmap.patch b/patches/collateral-evolutions/drm/02-revert-vm_mmap.patch
deleted file mode 100644
index 81fc1cc9..00000000
--- a/patches/collateral-evolutions/drm/02-revert-vm_mmap.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-vm_mmap() and vm_munmap() were introduced in kernels >= 3.4.0. Revert
-those changes for versions older than that.
-
-These can't be backported as they rely on non-exported symbols.
-
---- a/drivers/gpu/drm/drm_bufs.c
-+++ b/drivers/gpu/drm/drm_bufs.c
-@@ -1541,6 +1541,20 @@ int drm_mapbufs(struct drm_device *dev,
- retcode = -EINVAL;
- goto done;
- }
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
-+ down_write(&current->mm->mmap_sem);
-+ virtual = do_mmap(file_priv->filp, 0, map->size,
-+ PROT_READ | PROT_WRITE,
-+ MAP_SHARED,
-+ token);
-+ up_write(&current->mm->mmap_sem);
-+ } else {
-+ down_write(&current->mm->mmap_sem);
-+ virtual = do_mmap(file_priv->filp, 0, dma->byte_count,
-+ PROT_READ | PROT_WRITE,
-+ MAP_SHARED, 0);
-+ up_write(&current->mm->mmap_sem);
-+#else
- virtual = vm_mmap(file_priv->filp, 0, map->size,
- PROT_READ | PROT_WRITE,
- MAP_SHARED,
-@@ -1549,6 +1563,7 @@ int drm_mapbufs(struct drm_device *dev,
- virtual = vm_mmap(file_priv->filp, 0, dma->byte_count,
- PROT_READ | PROT_WRITE,
- MAP_SHARED, 0);
-+#endif
- }
- if (virtual > -1024UL) {
- /* Real error */
---- a/drivers/gpu/drm/i810/i810_dma.c
-+++ b/drivers/gpu/drm/i810/i810_dma.c
-@@ -135,9 +135,17 @@ static int i810_map_buffer(struct drm_bu
- old_fops = file_priv->filp->f_op;
- file_priv->filp->f_op = &i810_buffer_fops;
- dev_priv->mmap_buffer = buf;
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
-+ down_write(&current->mm->mmap_sem);
-+ buf_priv->virtual = (void *)do_mmap(file_priv->filp, 0, buf->total,
-+ PROT_READ | PROT_WRITE,
-+ MAP_SHARED, buf->bus_address);
-+ up_write(&current->mm->mmap_sem);
-+#else
- buf_priv->virtual = (void *)vm_mmap(file_priv->filp, 0, buf->total,
- PROT_READ | PROT_WRITE,
- MAP_SHARED, buf->bus_address);
-+#endif
- dev_priv->mmap_buffer = NULL;
- file_priv->filp->f_op = old_fops;
- if (IS_ERR(buf_priv->virtual)) {
-@@ -158,9 +166,15 @@ static int i810_unmap_buffer(struct drm_
- if (buf_priv->currently_mapped != I810_BUF_MAPPED)
- return -EINVAL;
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
-+ down_write(&current->mm->mmap_sem);
-+ retcode = do_munmap(current->mm, (unsigned long)buf_priv->virtual,
-+ (size_t) buf->total);
-+ up_write(&current->mm->mmap_sem);
-+#else
- retcode = vm_munmap((unsigned long)buf_priv->virtual,
- (size_t) buf->total);
--
-+#endif
- buf_priv->currently_mapped = I810_BUF_UNMAPPED;
- buf_priv->virtual = NULL;
-
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -1294,10 +1294,17 @@ i915_gem_mmap_ioctl(struct drm_device *d
- drm_gem_object_unreference_unlocked(obj);
- return -EINVAL;
- }
--
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
-+ down_write(&current->mm->mmap_sem);
-+ addr = do_mmap(obj->filp, 0, args->size,
-+ PROT_READ | PROT_WRITE, MAP_SHARED,
-+ args->offset);
-+ up_write(&current->mm->mmap_sem);
-+#else
- addr = vm_mmap(obj->filp, 0, args->size,
- PROT_READ | PROT_WRITE, MAP_SHARED,
- args->offset);
-+#endif
- drm_gem_object_unreference_unlocked(obj);
- if (IS_ERR((void *)addr))
- return addr;
diff --git a/patches/collateral-evolutions/drm/02-revert-vm_mmap/INFO b/patches/collateral-evolutions/drm/02-revert-vm_mmap/INFO
new file mode 100644
index 00000000..977b4b79
--- /dev/null
+++ b/patches/collateral-evolutions/drm/02-revert-vm_mmap/INFO
@@ -0,0 +1,5 @@
+vm_mmap() and vm_munmap() were introduced in kernels >= 3.4.0. Revert
+those changes for versions older than that.
+
+These can't be backported as they rely on non-exported symbols.
+
diff --git a/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_drm_bufs.c b/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_drm_bufs.c
new file mode 100644
index 00000000..af4681c3
--- /dev/null
+++ b/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_drm_bufs.c
@@ -0,0 +1,31 @@
+--- a/drivers/gpu/drm/drm_bufs.c
++++ b/drivers/gpu/drm/drm_bufs.c
+@@ -1541,6 +1541,20 @@
+ retcode = -EINVAL;
+ goto done;
+ }
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
++ down_write(&current->mm->mmap_sem);
++ virtual = do_mmap(file_priv->filp, 0, map->size,
++ PROT_READ | PROT_WRITE,
++ MAP_SHARED,
++ token);
++ up_write(&current->mm->mmap_sem);
++ } else {
++ down_write(&current->mm->mmap_sem);
++ virtual = do_mmap(file_priv->filp, 0, dma->byte_count,
++ PROT_READ | PROT_WRITE,
++ MAP_SHARED, 0);
++ up_write(&current->mm->mmap_sem);
++#else
+ virtual = vm_mmap(file_priv->filp, 0, map->size,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED,
+@@ -1549,6 +1563,7 @@
+ virtual = vm_mmap(file_priv->filp, 0, dma->byte_count,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED, 0);
++#endif
+ }
+ if (virtual > -1024UL) {
+ /* Real error */
diff --git a/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i810_i810_dma.c b/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i810_i810_dma.c
new file mode 100644
index 00000000..c27615ef
--- /dev/null
+++ b/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i810_i810_dma.c
@@ -0,0 +1,37 @@
+--- a/drivers/gpu/drm/i810/i810_dma.c
++++ b/drivers/gpu/drm/i810/i810_dma.c
+@@ -135,9 +135,17 @@
+ old_fops = file_priv->filp->f_op;
+ file_priv->filp->f_op = &i810_buffer_fops;
+ dev_priv->mmap_buffer = buf;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
++ down_write(&current->mm->mmap_sem);
++ buf_priv->virtual = (void *)do_mmap(file_priv->filp, 0, buf->total,
++ PROT_READ | PROT_WRITE,
++ MAP_SHARED, buf->bus_address);
++ up_write(&current->mm->mmap_sem);
++#else
+ buf_priv->virtual = (void *)vm_mmap(file_priv->filp, 0, buf->total,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED, buf->bus_address);
++#endif
+ dev_priv->mmap_buffer = NULL;
+ file_priv->filp->f_op = old_fops;
+ if (IS_ERR(buf_priv->virtual)) {
+@@ -158,9 +166,15 @@
+ if (buf_priv->currently_mapped != I810_BUF_MAPPED)
+ return -EINVAL;
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
++ down_write(&current->mm->mmap_sem);
++ retcode = do_munmap(current->mm, (unsigned long)buf_priv->virtual,
++ (size_t) buf->total);
++ up_write(&current->mm->mmap_sem);
++#else
+ retcode = vm_munmap((unsigned long)buf_priv->virtual,
+ (size_t) buf->total);
+-
++#endif
+ buf_priv->currently_mapped = I810_BUF_UNMAPPED;
+ buf_priv->virtual = NULL;
+
diff --git a/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i915_i915_gem.c b/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i915_i915_gem.c
new file mode 100644
index 00000000..d29b39b7
--- /dev/null
+++ b/patches/collateral-evolutions/drm/02-revert-vm_mmap/drivers_gpu_drm_i915_i915_gem.c
@@ -0,0 +1,21 @@
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -1294,10 +1294,17 @@
+ drm_gem_object_unreference_unlocked(obj);
+ return -EINVAL;
+ }
+-
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0))
++ down_write(&current->mm->mmap_sem);
++ addr = do_mmap(obj->filp, 0, args->size,
++ PROT_READ | PROT_WRITE, MAP_SHARED,
++ args->offset);
++ up_write(&current->mm->mmap_sem);
++#else
+ addr = vm_mmap(obj->filp, 0, args->size,
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ args->offset);
++#endif
+ drm_gem_object_unreference_unlocked(obj);
+ if (IS_ERR((void *)addr))
+ return addr;
diff --git a/patches/collateral-evolutions/drm/03-swiotlb.patch b/patches/collateral-evolutions/drm/03-swiotlb.patch
deleted file mode 100644
index 8554da54..00000000
--- a/patches/collateral-evolutions/drm/03-swiotlb.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-
-swiotlb_nr_tbl() was available since 3.2 but was exported since 3.3.
-Since it uses an internal global state variable, it is impossible
-to backport it to compat.git. So revert the changes.
-
---- a/drivers/gpu/drm/nouveau/nouveau_bo.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
-@@ -1374,11 +1374,13 @@ nouveau_ttm_tt_populate(struct ttm_tt *t
- }
- #endif
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- #ifdef CONFIG_SWIOTLB
- if (swiotlb_nr_tbl()) {
- return ttm_dma_populate((void *)ttm, dev->dev);
- }
- #endif
-+#endif
-
- r = ttm_pool_populate(ttm);
- if (r) {
-@@ -1424,12 +1426,14 @@ nouveau_ttm_tt_unpopulate(struct ttm_tt
- }
- #endif
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- #ifdef CONFIG_SWIOTLB
- if (swiotlb_nr_tbl()) {
- ttm_dma_unpopulate((void *)ttm, dev->dev);
- return;
- }
- #endif
-+#endif
-
- for (i = 0; i < ttm->num_pages; i++) {
- if (ttm_dma->dma_address[i]) {
---- a/drivers/gpu/drm/radeon/radeon_ttm.c
-+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
-@@ -603,11 +603,13 @@ static int radeon_ttm_tt_populate(struct
- }
- #endif
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- #ifdef CONFIG_SWIOTLB
- if (swiotlb_nr_tbl()) {
- return ttm_dma_populate(&gtt->ttm, rdev->dev);
- }
- #endif
-+#endif
-
- r = ttm_pool_populate(ttm);
- if (r) {
-@@ -649,12 +651,14 @@ static void radeon_ttm_tt_unpopulate(str
- }
- #endif
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- #ifdef CONFIG_SWIOTLB
- if (swiotlb_nr_tbl()) {
- ttm_dma_unpopulate(&gtt->ttm, rdev->dev);
- return;
- }
- #endif
-+#endif
-
- for (i = 0; i < ttm->num_pages; i++) {
- if (gtt->ttm.dma_address[i]) {
-@@ -877,6 +881,7 @@ static int radeon_ttm_debugfs_init(struc
- radeon_mem_types_list[i].show = &ttm_page_alloc_debugfs;
- radeon_mem_types_list[i].driver_features = 0;
- radeon_mem_types_list[i++].data = NULL;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- #ifdef CONFIG_SWIOTLB
- if (swiotlb_nr_tbl()) {
- sprintf(radeon_mem_types_names[i], "ttm_dma_page_pool");
-@@ -886,6 +891,7 @@ static int radeon_ttm_debugfs_init(struc
- radeon_mem_types_list[i++].data = NULL;
- }
- #endif
-+#endif
- return radeon_debugfs_add_files(rdev, radeon_mem_types_list, i);
-
- #endif
diff --git a/patches/collateral-evolutions/drm/03-swiotlb/INFO b/patches/collateral-evolutions/drm/03-swiotlb/INFO
new file mode 100644
index 00000000..5b7265f0
--- /dev/null
+++ b/patches/collateral-evolutions/drm/03-swiotlb/INFO
@@ -0,0 +1,5 @@
+
+swiotlb_nr_tbl() was available since 3.2 but was exported since 3.3.
+Since it uses an internal global state variable, it is impossible
+to backport it to compat.git. So revert the changes.
+
diff --git a/patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_nouveau_nouveau_bo.c b/patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_nouveau_nouveau_bo.c
new file mode 100644
index 00000000..b8dd5069
--- /dev/null
+++ b/patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_nouveau_nouveau_bo.c
@@ -0,0 +1,31 @@
+--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
++++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
+@@ -1374,11 +1374,13 @@
+ }
+ #endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ #ifdef CONFIG_SWIOTLB
+ if (swiotlb_nr_tbl()) {
+ return ttm_dma_populate((void *)ttm, dev->dev);
+ }
+ #endif
++#endif
+
+ r = ttm_pool_populate(ttm);
+ if (r) {
+@@ -1424,12 +1426,14 @@
+ }
+ #endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ #ifdef CONFIG_SWIOTLB
+ if (swiotlb_nr_tbl()) {
+ ttm_dma_unpopulate((void *)ttm, dev->dev);
+ return;
+ }
+ #endif
++#endif
+
+ for (i = 0; i < ttm->num_pages; i++) {
+ if (ttm_dma->dma_address[i]) {
diff --git a/patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_radeon_radeon_ttm.c b/patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_radeon_radeon_ttm.c
new file mode 100644
index 00000000..9094dfd8
--- /dev/null
+++ b/patches/collateral-evolutions/drm/03-swiotlb/drivers_gpu_drm_radeon_radeon_ttm.c
@@ -0,0 +1,47 @@
+--- a/drivers/gpu/drm/radeon/radeon_ttm.c
++++ b/drivers/gpu/drm/radeon/radeon_ttm.c
+@@ -603,11 +603,13 @@
+ }
+ #endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ #ifdef CONFIG_SWIOTLB
+ if (swiotlb_nr_tbl()) {
+ return ttm_dma_populate(&gtt->ttm, rdev->dev);
+ }
+ #endif
++#endif
+
+ r = ttm_pool_populate(ttm);
+ if (r) {
+@@ -649,12 +651,14 @@
+ }
+ #endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ #ifdef CONFIG_SWIOTLB
+ if (swiotlb_nr_tbl()) {
+ ttm_dma_unpopulate(&gtt->ttm, rdev->dev);
+ return;
+ }
+ #endif
++#endif
+
+ for (i = 0; i < ttm->num_pages; i++) {
+ if (gtt->ttm.dma_address[i]) {
+@@ -877,6 +881,7 @@
+ radeon_mem_types_list[i].show = &ttm_page_alloc_debugfs;
+ radeon_mem_types_list[i].driver_features = 0;
+ radeon_mem_types_list[i++].data = NULL;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ #ifdef CONFIG_SWIOTLB
+ if (swiotlb_nr_tbl()) {
+ sprintf(radeon_mem_types_names[i], "ttm_dma_page_pool");
+@@ -886,6 +891,7 @@
+ radeon_mem_types_list[i++].data = NULL;
+ }
+ #endif
++#endif
+ return radeon_debugfs_add_files(rdev, radeon_mem_types_list, i);
+
+ #endif
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support.patch b/patches/collateral-evolutions/drm/04-revert-prime-support.patch
deleted file mode 100644
index 5ceeb790..00000000
--- a/patches/collateral-evolutions/drm/04-revert-prime-support.patch
+++ /dev/null
@@ -1,347 +0,0 @@
-Disable PRIME support in core drm, radeon, nouveau and i915 for
-kernels < 3.4.0.
-
-PRIME depends on dma-buf which is added to the kernel with 3.3 but
-the one in 3.3 is mostly stub, e.g. it is a skeleton API which
-is highly modified in 3.4. So disable PRIME for kernels < 3.4.0,
-not < 3.3.0.
-
---- a/drivers/gpu/drm/drm_drv.c
-+++ b/drivers/gpu/drm/drm_drv.c
-@@ -137,8 +137,10 @@ static struct drm_ioctl_desc drm_ioctls[
-
- DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETRESOURCES, drm_mode_getresources, DRM_CONTROL_ALLOW|DRM_UNLOCKED),
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- DRM_IOCTL_DEF(DRM_IOCTL_PRIME_HANDLE_TO_FD, drm_prime_handle_to_fd_ioctl, DRM_AUTH|DRM_UNLOCKED),
- DRM_IOCTL_DEF(DRM_IOCTL_PRIME_FD_TO_HANDLE, drm_prime_fd_to_handle_ioctl, DRM_AUTH|DRM_UNLOCKED),
-+#endif
-
- DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETPLANERESOURCES, drm_mode_getplane_res, DRM_CONTROL_ALLOW|DRM_UNLOCKED),
- DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETCRTC, drm_mode_getcrtc, DRM_CONTROL_ALLOW|DRM_UNLOCKED),
---- a/drivers/gpu/drm/drm_fops.c
-+++ b/drivers/gpu/drm/drm_fops.c
-@@ -284,8 +284,10 @@ static int drm_open_helper(struct inode
- if (dev->driver->driver_features & DRIVER_GEM)
- drm_gem_open(dev, priv);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (drm_core_check_feature(dev, DRIVER_PRIME))
- drm_prime_init_file_private(&priv->prime);
-+#endif
-
- if (dev->driver->open) {
- ret = dev->driver->open(dev, priv);
-@@ -538,8 +540,10 @@ int drm_release(struct inode *inode, str
- if (dev->driver->postclose)
- dev->driver->postclose(dev, file_priv);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (drm_core_check_feature(dev, DRIVER_PRIME))
- drm_prime_destroy_file_private(&file_priv->prime);
-+#endif
-
- put_pid(file_priv->pid);
- kfree(file_priv);
---- a/drivers/gpu/drm/drm_gem.c
-+++ b/drivers/gpu/drm/drm_gem.c
-@@ -35,7 +35,9 @@
- #include <linux/mman.h>
- #include <linux/pagemap.h>
- #include <linux/shmem_fs.h>
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- #include <linux/dma-buf.h>
-+#endif
- #include <drm/drmP.h>
-
- /** @file drm_gem.c
-@@ -204,6 +206,7 @@ EXPORT_SYMBOL(drm_gem_object_alloc);
- static void
- drm_gem_remove_prime_handles(struct drm_gem_object *obj, struct drm_file *filp)
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (obj->import_attach) {
- drm_prime_remove_imported_buf_handle(&filp->prime,
- obj->import_attach->dmabuf);
-@@ -212,6 +215,7 @@ drm_gem_remove_prime_handles(struct drm_
- drm_prime_remove_imported_buf_handle(&filp->prime,
- obj->export_dma_buf);
- }
-+#endif
- }
-
- /**
---- a/drivers/gpu/drm/drm_prime.c
-+++ b/drivers/gpu/drm/drm_prime.c
-@@ -26,6 +26,8 @@
- *
- */
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+
- #include <linux/export.h>
- #include <linux/dma-buf.h>
- #include <drm/drmP.h>
-@@ -532,3 +534,4 @@ void drm_prime_remove_imported_buf_handl
- mutex_unlock(&prime_fpriv->lock);
- }
- EXPORT_SYMBOL(drm_prime_remove_imported_buf_handle);
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) */
---- a/drivers/gpu/drm/nouveau/nouveau_prime.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_prime.c
-@@ -22,6 +22,8 @@
- * Authors: Dave Airlie
- */
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+
- #include <drm/drmP.h>
-
- #include "nouveau_drm.h"
-@@ -93,3 +95,4 @@ int nouveau_gem_prime_pin(struct drm_gem
-
- return 0;
- }
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) */
---- a/drivers/gpu/drm/radeon/radeon_prime.c
-+++ b/drivers/gpu/drm/radeon/radeon_prime.c
-@@ -23,6 +23,7 @@
- *
- * Authors: Alex Deucher
- */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- #include <drm/drmP.h>
-
- #include "radeon.h"
-@@ -96,3 +97,4 @@ int radeon_gem_prime_pin(struct drm_gem_
-
- return 0;
- }
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) */
---- a/drivers/gpu/drm/radeon/radeon_drv.c
-+++ b/drivers/gpu/drm/radeon/radeon_drv.c
-@@ -374,8 +374,10 @@ static const struct file_operations rade
- static struct drm_driver kms_driver = {
- .driver_features =
- DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG |
-- DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED | DRIVER_GEM |
-- DRIVER_PRIME,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+ DRIVER_PRIME |
-+#endif
-+ DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED | DRIVER_GEM,
- .dev_priv_size = 0,
- .load = radeon_driver_load_kms,
- .firstopen = radeon_driver_firstopen_kms,
-@@ -410,6 +412,7 @@ static struct drm_driver kms_driver = {
- .dumb_destroy = radeon_mode_dumb_destroy,
- .fops = &radeon_driver_kms_fops,
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
-@@ -419,6 +422,7 @@ static struct drm_driver kms_driver = {
- .gem_prime_import_sg_table = radeon_gem_prime_import_sg_table,
- .gem_prime_vmap = radeon_gem_prime_vmap,
- .gem_prime_vunmap = radeon_gem_prime_vunmap,
-+#endif
-
- .name = DRIVER_NAME,
- .desc = DRIVER_DESC,
---- a/drivers/gpu/drm/radeon/radeon_gem.c
-+++ b/drivers/gpu/drm/radeon/radeon_gem.c
-@@ -41,8 +41,10 @@ void radeon_gem_object_free(struct drm_g
- struct radeon_bo *robj = gem_to_radeon_bo(gobj);
-
- if (robj) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (robj->gem_base.import_attach)
- drm_prime_gem_destroy(&robj->gem_base, robj->tbo.sg);
-+#endif
- radeon_bo_unref(&robj);
- }
- }
---- a/drivers/gpu/drm/radeon/radeon_ttm.c
-+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
-@@ -584,17 +584,21 @@ static int radeon_ttm_tt_populate(struct
- struct radeon_ttm_tt *gtt = (void *)ttm;
- unsigned i;
- int r;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
-+#endif
-
- if (ttm->state != tt_unpopulated)
- return 0;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (slave && ttm->sg) {
- drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages,
- gtt->ttm.dma_address, ttm->num_pages);
- ttm->state = tt_unbound;
- return 0;
- }
-+#endif
-
- rdev = radeon_get_rdev(ttm->bdev);
- #if __OS_HAS_AGP
-@@ -638,10 +642,12 @@ static void radeon_ttm_tt_unpopulate(str
- struct radeon_device *rdev;
- struct radeon_ttm_tt *gtt = (void *)ttm;
- unsigned i;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
-
- if (slave)
- return;
-+#endif
-
- rdev = radeon_get_rdev(ttm->bdev);
- #if __OS_HAS_AGP
---- a/drivers/gpu/drm/nouveau/nouveau_bo.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
-@@ -1352,11 +1352,14 @@ nouveau_ttm_tt_populate(struct ttm_tt *t
- struct drm_device *dev;
- unsigned i;
- int r;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
-+#endif
-
- if (ttm->state != tt_unpopulated)
- return 0;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (slave && ttm->sg) {
- /* make userspace faulting work */
- drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages,
-@@ -1364,6 +1367,7 @@ nouveau_ttm_tt_populate(struct ttm_tt *t
- ttm->state = tt_unbound;
- return 0;
- }
-+#endif
-
- drm = nouveau_bdev(ttm->bdev);
- dev = drm->dev;
-@@ -1411,10 +1415,12 @@ nouveau_ttm_tt_unpopulate(struct ttm_tt
- struct nouveau_drm *drm;
- struct drm_device *dev;
- unsigned i;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
-
- if (slave)
- return;
-+#endif
-
- drm = nouveau_bdev(ttm->bdev);
- dev = drm->dev;
---- a/drivers/gpu/drm/nouveau/nouveau_drm.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
-@@ -662,7 +662,10 @@ driver = {
- .driver_features =
- DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_SG |
- DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
-- DRIVER_MODESET | DRIVER_PRIME,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-+ DRIVER_PRIME |
-+#endif
-+ DRIVER_MODESET,
-
- .load = nouveau_drm_load,
- .unload = nouveau_drm_unload,
-@@ -688,6 +691,7 @@ driver = {
- .ioctls = nouveau_ioctls,
- .fops = &nouveau_driver_fops,
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = drm_gem_prime_export,
-@@ -697,6 +701,7 @@ driver = {
- .gem_prime_import_sg_table = nouveau_gem_prime_import_sg_table,
- .gem_prime_vmap = nouveau_gem_prime_vmap,
- .gem_prime_vunmap = nouveau_gem_prime_vunmap,
-+#endif
-
- .gem_init_object = nouveau_gem_object_new,
- .gem_free_object = nouveau_gem_object_del,
---- a/drivers/gpu/drm/nouveau/nouveau_gem.c
-+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
-@@ -55,8 +55,10 @@ nouveau_gem_object_del(struct drm_gem_ob
- nouveau_bo_unpin(nvbo);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (gem->import_attach)
- drm_prime_gem_destroy(gem, nvbo->bo.sg);
-+#endif
-
- ttm_bo_unref(&bo);
-
---- a/drivers/gpu/drm/i915/i915_drv.c
-+++ b/drivers/gpu/drm/i915/i915_drv.c
-@@ -1058,7 +1058,11 @@ static struct drm_driver driver = {
- */
- .driver_features =
- DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | /* DRIVER_USE_MTRR |*/
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM | DRIVER_PRIME,
-+#else
-+ DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM,
-+#endif
- .load = i915_driver_load,
- .unload = i915_driver_unload,
- .open = i915_driver_open,
-@@ -1081,10 +1085,12 @@ static struct drm_driver driver = {
- .gem_free_object = i915_gem_free_object,
- .gem_vm_ops = &i915_gem_vm_ops,
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
- .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
- .gem_prime_export = i915_gem_prime_export,
- .gem_prime_import = i915_gem_prime_import,
-+#endif
-
- .dumb_create = i915_gem_dumb_create,
- .dumb_map_offset = i915_gem_mmap_gtt,
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -34,7 +34,9 @@
- #include <linux/slab.h>
- #include <linux/swap.h>
- #include <linux/pci.h>
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- #include <linux/dma-buf.h>
-+#endif
-
- static void i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj);
- static void i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj);
-@@ -3825,8 +3827,10 @@ void i915_gem_free_object(struct drm_gem
-
- BUG_ON(obj->pages);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- if (obj->base.import_attach)
- drm_prime_gem_destroy(&obj->base, NULL);
-+#endif
-
- drm_gem_object_release(&obj->base);
- i915_gem_info_remove_obj(dev_priv, obj->base.size);
---- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
-+++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
-@@ -23,6 +23,7 @@
- * Authors:
- * Dave Airlie <airlied@redhat.com>
- */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- #include <drm/drmP.h>
- #include "i915_drv.h"
- #include <linux/dma-buf.h>
-@@ -307,3 +308,4 @@ fail_detach:
- dma_buf_detach(dma_buf, attach);
- return ERR_PTR(ret);
- }
-+#endif
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/INFO b/patches/collateral-evolutions/drm/04-revert-prime-support/INFO
new file mode 100644
index 00000000..94cafb7d
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/INFO
@@ -0,0 +1,8 @@
+Disable PRIME support in core drm, radeon, nouveau and i915 for
+kernels < 3.4.0.
+
+PRIME depends on dma-buf which is added to the kernel with 3.3 but
+the one in 3.3 is mostly stub, e.g. it is a skeleton API which
+is highly modified in 3.4. So disable PRIME for kernels < 3.4.0,
+not < 3.3.0.
+
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_drv.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_drv.c
new file mode 100644
index 00000000..36b17301
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_drv.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/drm_drv.c
++++ b/drivers/gpu/drm/drm_drv.c
+@@ -137,8 +137,10 @@
+
+ DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETRESOURCES, drm_mode_getresources, DRM_CONTROL_ALLOW|DRM_UNLOCKED),
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ DRM_IOCTL_DEF(DRM_IOCTL_PRIME_HANDLE_TO_FD, drm_prime_handle_to_fd_ioctl, DRM_AUTH|DRM_UNLOCKED),
+ DRM_IOCTL_DEF(DRM_IOCTL_PRIME_FD_TO_HANDLE, drm_prime_fd_to_handle_ioctl, DRM_AUTH|DRM_UNLOCKED),
++#endif
+
+ DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETPLANERESOURCES, drm_mode_getplane_res, DRM_CONTROL_ALLOW|DRM_UNLOCKED),
+ DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETCRTC, drm_mode_getcrtc, DRM_CONTROL_ALLOW|DRM_UNLOCKED),
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_fops.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_fops.c
new file mode 100644
index 00000000..b847d9e6
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_fops.c
@@ -0,0 +1,24 @@
+--- a/drivers/gpu/drm/drm_fops.c
++++ b/drivers/gpu/drm/drm_fops.c
+@@ -284,8 +284,10 @@
+ if (dev->driver->driver_features & DRIVER_GEM)
+ drm_gem_open(dev, priv);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (drm_core_check_feature(dev, DRIVER_PRIME))
+ drm_prime_init_file_private(&priv->prime);
++#endif
+
+ if (dev->driver->open) {
+ ret = dev->driver->open(dev, priv);
+@@ -538,8 +540,10 @@
+ if (dev->driver->postclose)
+ dev->driver->postclose(dev, file_priv);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (drm_core_check_feature(dev, DRIVER_PRIME))
+ drm_prime_destroy_file_private(&file_priv->prime);
++#endif
+
+ put_pid(file_priv->pid);
+ kfree(file_priv);
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_gem.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_gem.c
new file mode 100644
index 00000000..322739c8
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_gem.c
@@ -0,0 +1,28 @@
+--- a/drivers/gpu/drm/drm_gem.c
++++ b/drivers/gpu/drm/drm_gem.c
+@@ -35,7 +35,9 @@
+ #include <linux/mman.h>
+ #include <linux/pagemap.h>
+ #include <linux/shmem_fs.h>
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ #include <linux/dma-buf.h>
++#endif
+ #include <drm/drmP.h>
+
+ /** @file drm_gem.c
+@@ -204,6 +206,7 @@
+ static void
+ drm_gem_remove_prime_handles(struct drm_gem_object *obj, struct drm_file *filp)
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (obj->import_attach) {
+ drm_prime_remove_imported_buf_handle(&filp->prime,
+ obj->import_attach->dmabuf);
+@@ -212,6 +215,7 @@
+ drm_prime_remove_imported_buf_handle(&filp->prime,
+ obj->export_dma_buf);
+ }
++#endif
+ }
+
+ /**
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_prime.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_prime.c
new file mode 100644
index 00000000..f440d6de
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_drm_prime.c
@@ -0,0 +1,16 @@
+--- a/drivers/gpu/drm/drm_prime.c
++++ b/drivers/gpu/drm/drm_prime.c
+@@ -26,6 +26,8 @@
+ *
+ */
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
++
+ #include <linux/export.h>
+ #include <linux/dma-buf.h>
+ #include <drm/drmP.h>
+@@ -532,3 +534,4 @@
+ mutex_unlock(&prime_fpriv->lock);
+ }
+ EXPORT_SYMBOL(drm_prime_remove_imported_buf_handle);
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) */
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_drv.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_drv.c
new file mode 100644
index 00000000..6b9ae9dc
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_drv.c
@@ -0,0 +1,27 @@
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -1058,7 +1058,11 @@
+ */
+ .driver_features =
+ DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | /* DRIVER_USE_MTRR |*/
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM | DRIVER_PRIME,
++#else
++ DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM,
++#endif
+ .load = i915_driver_load,
+ .unload = i915_driver_unload,
+ .open = i915_driver_open,
+@@ -1081,10 +1085,12 @@
+ .gem_free_object = i915_gem_free_object,
+ .gem_vm_ops = &i915_gem_vm_ops,
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
+ .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
+ .gem_prime_export = i915_gem_prime_export,
+ .gem_prime_import = i915_gem_prime_import,
++#endif
+
+ .dumb_create = i915_gem_dumb_create,
+ .dumb_map_offset = i915_gem_mmap_gtt,
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem.c
new file mode 100644
index 00000000..4182342c
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem.c
@@ -0,0 +1,23 @@
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -34,7 +34,9 @@
+ #include <linux/slab.h>
+ #include <linux/swap.h>
+ #include <linux/pci.h>
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ #include <linux/dma-buf.h>
++#endif
+
+ static void i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj);
+ static void i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj);
+@@ -3825,8 +3827,10 @@
+
+ BUG_ON(obj->pages);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (obj->base.import_attach)
+ drm_prime_gem_destroy(&obj->base, NULL);
++#endif
+
+ drm_gem_object_release(&obj->base);
+ i915_gem_info_remove_obj(dev_priv, obj->base.size);
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem_dmabuf.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem_dmabuf.c
new file mode 100644
index 00000000..8cc6e021
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_i915_i915_gem_dmabuf.c
@@ -0,0 +1,15 @@
+--- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
++++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
+@@ -23,6 +23,7 @@
+ * Authors:
+ * Dave Airlie <airlied@redhat.com>
+ */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ #include <drm/drmP.h>
+ #include "i915_drv.h"
+ #include <linux/dma-buf.h>
+@@ -307,3 +308,4 @@
+ dma_buf_detach(dma_buf, attach);
+ return ERR_PTR(ret);
+ }
++#endif
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_bo.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_bo.c
new file mode 100644
index 00000000..d4c4feeb
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_bo.c
@@ -0,0 +1,38 @@
+--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
++++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
+@@ -1352,11 +1352,14 @@
+ struct drm_device *dev;
+ unsigned i;
+ int r;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
++#endif
+
+ if (ttm->state != tt_unpopulated)
+ return 0;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (slave && ttm->sg) {
+ /* make userspace faulting work */
+ drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages,
+@@ -1364,6 +1367,7 @@
+ ttm->state = tt_unbound;
+ return 0;
+ }
++#endif
+
+ drm = nouveau_bdev(ttm->bdev);
+ dev = drm->dev;
+@@ -1411,10 +1415,12 @@
+ struct nouveau_drm *drm;
+ struct drm_device *dev;
+ unsigned i;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
+
+ if (slave)
+ return;
++#endif
+
+ drm = nouveau_bdev(ttm->bdev);
+ dev = drm->dev;
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_drm.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_drm.c
new file mode 100644
index 00000000..c2dcb6ca
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_drm.c
@@ -0,0 +1,30 @@
+--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
++++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
+@@ -662,7 +662,10 @@
+ .driver_features =
+ DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_SG |
+ DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM |
+- DRIVER_MODESET | DRIVER_PRIME,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
++ DRIVER_PRIME |
++#endif
++ DRIVER_MODESET,
+
+ .load = nouveau_drm_load,
+ .unload = nouveau_drm_unload,
+@@ -688,6 +691,7 @@
+ .ioctls = nouveau_ioctls,
+ .fops = &nouveau_driver_fops,
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
+ .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
+ .gem_prime_export = drm_gem_prime_export,
+@@ -697,6 +701,7 @@
+ .gem_prime_import_sg_table = nouveau_gem_prime_import_sg_table,
+ .gem_prime_vmap = nouveau_gem_prime_vmap,
+ .gem_prime_vunmap = nouveau_gem_prime_vunmap,
++#endif
+
+ .gem_init_object = nouveau_gem_object_new,
+ .gem_free_object = nouveau_gem_object_del,
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_gem.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_gem.c
new file mode 100644
index 00000000..7795a120
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_gem.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
++++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
+@@ -55,8 +55,10 @@
+ nouveau_bo_unpin(nvbo);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (gem->import_attach)
+ drm_prime_gem_destroy(gem, nvbo->bo.sg);
++#endif
+
+ ttm_bo_unref(&bo);
+
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_prime.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_prime.c
new file mode 100644
index 00000000..e4765b3c
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_nouveau_nouveau_prime.c
@@ -0,0 +1,16 @@
+--- a/drivers/gpu/drm/nouveau/nouveau_prime.c
++++ b/drivers/gpu/drm/nouveau/nouveau_prime.c
+@@ -22,6 +22,8 @@
+ * Authors: Dave Airlie
+ */
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
++
+ #include <drm/drmP.h>
+
+ #include "nouveau_drm.h"
+@@ -93,3 +95,4 @@
+
+ return 0;
+ }
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) */
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_drv.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_drv.c
new file mode 100644
index 00000000..0ad62d61
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_drv.c
@@ -0,0 +1,31 @@
+--- a/drivers/gpu/drm/radeon/radeon_drv.c
++++ b/drivers/gpu/drm/radeon/radeon_drv.c
+@@ -374,8 +374,10 @@
+ static struct drm_driver kms_driver = {
+ .driver_features =
+ DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG |
+- DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED | DRIVER_GEM |
+- DRIVER_PRIME,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
++ DRIVER_PRIME |
++#endif
++ DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED | DRIVER_GEM,
+ .dev_priv_size = 0,
+ .load = radeon_driver_load_kms,
+ .firstopen = radeon_driver_firstopen_kms,
+@@ -410,6 +412,7 @@
+ .dumb_destroy = radeon_mode_dumb_destroy,
+ .fops = &radeon_driver_kms_fops,
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
+ .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
+ .gem_prime_export = drm_gem_prime_export,
+@@ -419,6 +422,7 @@
+ .gem_prime_import_sg_table = radeon_gem_prime_import_sg_table,
+ .gem_prime_vmap = radeon_gem_prime_vmap,
+ .gem_prime_vunmap = radeon_gem_prime_vunmap,
++#endif
+
+ .name = DRIVER_NAME,
+ .desc = DRIVER_DESC,
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_gem.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_gem.c
new file mode 100644
index 00000000..457d8d21
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_gem.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/radeon/radeon_gem.c
++++ b/drivers/gpu/drm/radeon/radeon_gem.c
+@@ -41,8 +41,10 @@
+ struct radeon_bo *robj = gem_to_radeon_bo(gobj);
+
+ if (robj) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (robj->gem_base.import_attach)
+ drm_prime_gem_destroy(&robj->gem_base, robj->tbo.sg);
++#endif
+ radeon_bo_unref(&robj);
+ }
+ }
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_prime.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_prime.c
new file mode 100644
index 00000000..291eea65
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_prime.c
@@ -0,0 +1,15 @@
+--- a/drivers/gpu/drm/radeon/radeon_prime.c
++++ b/drivers/gpu/drm/radeon/radeon_prime.c
+@@ -23,6 +23,7 @@
+ *
+ * Authors: Alex Deucher
+ */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ #include <drm/drmP.h>
+
+ #include "radeon.h"
+@@ -96,3 +97,4 @@
+
+ return 0;
+ }
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) */
diff --git a/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_ttm.c b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_ttm.c
new file mode 100644
index 00000000..4bbabe38
--- /dev/null
+++ b/patches/collateral-evolutions/drm/04-revert-prime-support/drivers_gpu_drm_radeon_radeon_ttm.c
@@ -0,0 +1,37 @@
+--- a/drivers/gpu/drm/radeon/radeon_ttm.c
++++ b/drivers/gpu/drm/radeon/radeon_ttm.c
+@@ -584,17 +584,21 @@
+ struct radeon_ttm_tt *gtt = (void *)ttm;
+ unsigned i;
+ int r;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
++#endif
+
+ if (ttm->state != tt_unpopulated)
+ return 0;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ if (slave && ttm->sg) {
+ drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages,
+ gtt->ttm.dma_address, ttm->num_pages);
+ ttm->state = tt_unbound;
+ return 0;
+ }
++#endif
+
+ rdev = radeon_get_rdev(ttm->bdev);
+ #if __OS_HAS_AGP
+@@ -638,10 +642,12 @@
+ struct radeon_device *rdev;
+ struct radeon_ttm_tt *gtt = (void *)ttm;
+ unsigned i;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
+ bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG);
+
+ if (slave)
+ return;
++#endif
+
+ rdev = radeon_get_rdev(ttm->bdev);
+ #if __OS_HAS_AGP
diff --git a/patches/collateral-evolutions/drm/05-i915-define-acpi-video-class/INFO b/patches/collateral-evolutions/drm/05-i915-define-acpi-video-class/INFO
new file mode 100644
index 00000000..ebc94292
--- /dev/null
+++ b/patches/collateral-evolutions/drm/05-i915-define-acpi-video-class/INFO
@@ -0,0 +1,4 @@
+The definition of ACPI_VIDEO_CLASS was moved from video.c
+to video.h in 3.1. Define it here to fix build for kernels older
+than 3.1.
+
diff --git a/patches/collateral-evolutions/drm/05-i915-define-acpi-video-class.patch b/patches/collateral-evolutions/drm/05-i915-define-acpi-video-class/drivers_gpu_drm_i915_intel_opregion.c
index cf7eb389..8cbce336 100644
--- a/patches/collateral-evolutions/drm/05-i915-define-acpi-video-class.patch
+++ b/patches/collateral-evolutions/drm/05-i915-define-acpi-video-class/drivers_gpu_drm_i915_intel_opregion.c
@@ -1,10 +1,6 @@
-The definition of ACPI_VIDEO_CLASS was moved from video.c
-to video.h in 3.1. Define it here to fix build for kernels older
-than 3.1.
-
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
-@@ -307,6 +307,9 @@ static int intel_opregion_video_event(st
+@@ -307,6 +307,9 @@
struct acpi_bus_event *event = data;
int ret = NOTIFY_OK;
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options.patch b/patches/collateral-evolutions/drm/06-rename-config-options.patch
deleted file mode 100644
index 93397d82..00000000
--- a/patches/collateral-evolutions/drm/06-rename-config-options.patch
+++ /dev/null
@@ -1,207 +0,0 @@
---- a/drivers/gpu/drm/Makefile
-+++ b/drivers/gpu/drm/Makefile
-@@ -15,41 +15,41 @@ drm-y := drm_auth.o drm_buffer.o d
- drm_trace_points.o drm_global.o drm_prime.o
-
- drm-$(CONFIG_COMPAT) += drm_ioc32.o
--drm-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o
-+drm-$(CONFIG_COMPAT_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o
- drm-$(CONFIG_PCI) += ati_pcigart.o
-
- drm-usb-y := drm_usb.o
-
- drm_kms_helper-y := drm_fb_helper.o drm_crtc_helper.o drm_dp_helper.o
--drm_kms_helper-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o
--drm_kms_helper-$(CONFIG_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o
-+drm_kms_helper-$(CONFIG_COMPAT_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o
-+drm_kms_helper-$(CONFIG_COMPAT_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o
-
--obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
-+obj-$(CONFIG_COMPAT_DRM_KMS_HELPER) += drm_kms_helper.o
-
- CFLAGS_drm_trace_points.o := -I$(src)
-
--obj-$(CONFIG_DRM) += drm.o
--obj-$(CONFIG_DRM_USB) += drm_usb.o
--obj-$(CONFIG_DRM_TTM) += ttm/
--obj-$(CONFIG_DRM_TDFX) += tdfx/
--obj-$(CONFIG_DRM_R128) += r128/
--obj-$(CONFIG_DRM_RADEON)+= radeon/
--obj-$(CONFIG_DRM_MGA) += mga/
--obj-$(CONFIG_DRM_I810) += i810/
--obj-$(CONFIG_DRM_I915) += i915/
--obj-$(CONFIG_DRM_MGAG200) += mgag200/
--obj-$(CONFIG_DRM_CIRRUS_QEMU) += cirrus/
--obj-$(CONFIG_DRM_SIS) += sis/
--obj-$(CONFIG_DRM_SAVAGE)+= savage/
--obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/
--obj-$(CONFIG_DRM_VIA) +=via/
--obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/
--obj-$(CONFIG_DRM_EXYNOS) +=exynos/
--obj-$(CONFIG_DRM_GMA500) += gma500/
--obj-$(CONFIG_DRM_UDL) += udl/
--obj-$(CONFIG_DRM_AST) += ast/
--obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/
--obj-$(CONFIG_DRM_TEGRA) += tegra/
--obj-$(CONFIG_DRM_OMAP) += omapdrm/
--obj-$(CONFIG_DRM_TILCDC) += tilcdc/
-+obj-$(CONFIG_COMPAT_DRM) += drm.o
-+obj-$(CONFIG_COMPAT_DRM_USB) += drm_usb.o
-+obj-$(CONFIG_COMPAT_DRM_TTM) += ttm/
-+obj-$(CONFIG_COMPAT_DRM_TDFX) += tdfx/
-+obj-$(CONFIG_COMPAT_DRM_R128) += r128/
-+obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon/
-+obj-$(CONFIG_COMPAT_DRM_MGA) += mga/
-+obj-$(CONFIG_COMPAT_DRM_I810) += i810/
-+obj-$(CONFIG_COMPAT_DRM_I915) += i915/
-+obj-$(CONFIG_COMPAT_DRM_MGAG200) += mgag200/
-+obj-$(CONFIG_COMPAT_DRM_CIRRUS_QEMU) += cirrus/
-+obj-$(CONFIG_COMPAT_DRM_SIS) += sis/
-+obj-$(CONFIG_COMPAT_DRM_SAVAGE)+= savage/
-+obj-$(CONFIG_COMPAT_DRM_VMWGFX)+= vmwgfx/
-+obj-$(CONFIG_COMPAT_DRM_VIA) +=via/
-+obj-$(CONFIG_COMPAT_DRM_NOUVEAU) +=nouveau/
-+obj-$(CONFIG_COMPAT_DRM_EXYNOS) +=exynos/
-+obj-$(CONFIG_COMPAT_DRM_GMA500) += gma500/
-+obj-$(CONFIG_COMPAT_DRM_UDL) += udl/
-+obj-$(CONFIG_COMPAT_DRM_AST) += ast/
-+obj-$(CONFIG_COMPAT_DRM_SHMOBILE) +=shmobile/
-+obj-$(CONFIG_COMPAT_DRM_TEGRA) += tegra/
-+obj-$(CONFIG_COMPAT_DRM_OMAP) += omapdrm/
-+obj-$(CONFIG_COMPAT_DRM_TILCDC) += tilcdc/
- obj-y += i2c/
---- a/drivers/gpu/drm/ast/Makefile
-+++ b/drivers/gpu/drm/ast/Makefile
-@@ -6,4 +6,4 @@ ccflags-y := -Iinclude/drm
-
- ast-y := ast_drv.o ast_main.o ast_mode.o ast_fb.o ast_ttm.o ast_post.o
-
--obj-$(CONFIG_DRM_AST) := ast.o
-\ No newline at end of file
-+obj-$(CONFIG_COMPAT_DRM_AST) := ast.o
---- a/drivers/gpu/drm/cirrus/Makefile
-+++ b/drivers/gpu/drm/cirrus/Makefile
-@@ -2,4 +2,4 @@ ccflags-y := -Iinclude/drm
- cirrus-y := cirrus_main.o cirrus_mode.o \
- cirrus_drv.o cirrus_fbdev.o cirrus_ttm.o
-
--obj-$(CONFIG_DRM_CIRRUS_QEMU) += cirrus.o
-+obj-$(CONFIG_COMPAT_DRM_CIRRUS_QEMU) += cirrus.o
---- a/drivers/gpu/drm/drm_crtc_helper.c
-+++ b/drivers/gpu/drm/drm_crtc_helper.c
-@@ -152,7 +152,7 @@ int drm_helper_probe_single_connector_mo
- goto prune;
- }
-
--#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
-+#ifdef CONFIG_COMPAT_DRM_LOAD_EDID_FIRMWARE
- count = drm_load_edid_firmware(connector);
- if (count == 0)
- #endif
---- a/drivers/gpu/drm/gma500/Makefile
-+++ b/drivers/gpu/drm/gma500/Makefile
-@@ -49,4 +49,4 @@ gma500_gfx-$(CONFIG_DRM_MEDFIELD) += mdf
- mdfld_tmd_vid.o \
- tc35876x-dsi-lvds.o
-
--obj-$(CONFIG_DRM_GMA500) += gma500_gfx.o
-+obj-$(CONFIG_COMPAT_DRM_GMA500) += gma500_gfx.o
---- a/drivers/gpu/drm/i2c/Makefile
-+++ b/drivers/gpu/drm/i2c/Makefile
-@@ -1,10 +1,10 @@
- ccflags-y := -Iinclude/drm
-
- ch7006-y := ch7006_drv.o ch7006_mode.o
--obj-$(CONFIG_DRM_I2C_CH7006) += ch7006.o
-+obj-$(CONFIG_COMPAT_DRM_I2C_CH7006) += ch7006.o
-
- sil164-y := sil164_drv.o
--obj-$(CONFIG_DRM_I2C_SIL164) += sil164.o
-+obj-$(CONFIG_COMPAT_DRM_I2C_SIL164) += sil164.o
-
- tda998x-y := tda998x_drv.o
--obj-$(CONFIG_DRM_I2C_NXP_TDA998X) += tda998x.o
-+obj-$(CONFIG_COMPAT_DRM_I2C_NXP_TDA998X) += tda998x.o
---- a/drivers/gpu/drm/i810/Makefile
-+++ b/drivers/gpu/drm/i810/Makefile
-@@ -5,4 +5,4 @@
- ccflags-y := -Iinclude/drm
- i810-y := i810_drv.o i810_dma.o
-
--obj-$(CONFIG_DRM_I810) += i810.o
-+obj-$(CONFIG_COMPAT_DRM_I810) += i810.o
---- a/drivers/gpu/drm/i915/Makefile
-+++ b/drivers/gpu/drm/i915/Makefile
-@@ -48,6 +48,6 @@ i915-$(CONFIG_COMPAT) += i915_ioc32.o
-
- i915-$(CONFIG_ACPI) += intel_acpi.o
-
--obj-$(CONFIG_DRM_I915) += i915.o
-+obj-$(CONFIG_COMPAT_DRM_I915) += i915.o
-
- CFLAGS_i915_trace_points.o := -I$(src)
---- a/drivers/gpu/drm/mgag200/Makefile
-+++ b/drivers/gpu/drm/mgag200/Makefile
-@@ -2,4 +2,4 @@ ccflags-y := -Iinclude/drm
- mgag200-y := mgag200_main.o mgag200_mode.o \
- mgag200_drv.o mgag200_fb.o mgag200_i2c.o mgag200_ttm.o
-
--obj-$(CONFIG_DRM_MGAG200) += mgag200.o
-+obj-$(CONFIG_COMPAT_DRM_MGAG200) += mgag200.o
---- a/drivers/gpu/drm/nouveau/Makefile
-+++ b/drivers/gpu/drm/nouveau/Makefile
-@@ -241,7 +241,7 @@ nouveau-$(CONFIG_COMPAT) += nouveau_ioc3
- ifdef CONFIG_X86
- nouveau-$(CONFIG_ACPI) += nouveau_acpi.o
- endif
--nouveau-$(CONFIG_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o
-+nouveau-$(CONFIG_COMPAT_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o
- nouveau-$(CONFIG_DEBUG_FS) += nouveau_debugfs.o
-
--obj-$(CONFIG_DRM_NOUVEAU)+= nouveau.o
-+obj-$(CONFIG_COMPAT_DRM_NOUVEAU)+= nouveau.o
---- a/drivers/gpu/drm/nouveau/nouveau_display.h
-+++ b/drivers/gpu/drm/nouveau/nouveau_display.h
-@@ -73,7 +73,7 @@ int nouveau_display_dumb_destroy(struct
-
- void nouveau_hdmi_mode_set(struct drm_encoder *, struct drm_display_mode *);
-
--#ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
-+#ifdef CONFIG_COMPAT_DRM_NOUVEAU_BACKLIGHT
- extern int nouveau_backlight_init(struct drm_device *);
- extern void nouveau_backlight_exit(struct drm_device *);
- #else
---- a/drivers/gpu/drm/radeon/Makefile
-+++ b/drivers/gpu/drm/radeon/Makefile
-@@ -82,6 +82,6 @@ radeon-$(CONFIG_COMPAT) += radeon_ioc32.
- radeon-$(CONFIG_VGA_SWITCHEROO) += radeon_atpx_handler.o
- radeon-$(CONFIG_ACPI) += radeon_acpi.o
-
--obj-$(CONFIG_DRM_RADEON)+= radeon.o
-+obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon.o
-
- CFLAGS_radeon_trace_points.o := -I$(src)
---- a/drivers/gpu/drm/ttm/Makefile
-+++ b/drivers/gpu/drm/ttm/Makefile
-@@ -11,4 +11,4 @@ ifeq ($(CONFIG_SWIOTLB),y)
- ttm-y += ttm_page_alloc_dma.o
- endif
-
--obj-$(CONFIG_DRM_TTM) += ttm.o
-+obj-$(CONFIG_COMPAT_DRM_TTM) += ttm.o
---- a/drivers/gpu/drm/via/Makefile
-+++ b/drivers/gpu/drm/via/Makefile
-@@ -5,4 +5,4 @@
- ccflags-y := -Iinclude/drm
- via-y := via_irq.o via_drv.o via_map.o via_mm.o via_dma.o via_verifier.o via_video.o via_dmablit.o
-
--obj-$(CONFIG_DRM_VIA) +=via.o
-+obj-$(CONFIG_COMPAT_DRM_VIA) +=via.o
---- a/drivers/gpu/drm/vmwgfx/Makefile
-+++ b/drivers/gpu/drm/vmwgfx/Makefile
-@@ -8,4 +8,4 @@ vmwgfx-y := vmwgfx_execbuf.o vmwgfx_gmr.
- vmwgfx_fence.o vmwgfx_dmabuf.o vmwgfx_scrn.o vmwgfx_context.o \
- vmwgfx_surface.o
-
--obj-$(CONFIG_DRM_VMWGFX) := vmwgfx.o
-+obj-$(CONFIG_COMPAT_DRM_VMWGFX) := vmwgfx.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_Makefile
new file mode 100644
index 00000000..e319947d
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_Makefile
@@ -0,0 +1,72 @@
+--- a/drivers/gpu/drm/Makefile
++++ b/drivers/gpu/drm/Makefile
+@@ -15,41 +15,41 @@
+ drm_trace_points.o drm_global.o drm_prime.o
+
+ drm-$(CONFIG_COMPAT) += drm_ioc32.o
+-drm-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o
++drm-$(CONFIG_COMPAT_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o
+ drm-$(CONFIG_PCI) += ati_pcigart.o
+
+ drm-usb-y := drm_usb.o
+
+ drm_kms_helper-y := drm_fb_helper.o drm_crtc_helper.o drm_dp_helper.o
+-drm_kms_helper-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o
+-drm_kms_helper-$(CONFIG_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o
++drm_kms_helper-$(CONFIG_COMPAT_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o
++drm_kms_helper-$(CONFIG_COMPAT_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o
+
+-obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
++obj-$(CONFIG_COMPAT_DRM_KMS_HELPER) += drm_kms_helper.o
+
+ CFLAGS_drm_trace_points.o := -I$(src)
+
+-obj-$(CONFIG_DRM) += drm.o
+-obj-$(CONFIG_DRM_USB) += drm_usb.o
+-obj-$(CONFIG_DRM_TTM) += ttm/
+-obj-$(CONFIG_DRM_TDFX) += tdfx/
+-obj-$(CONFIG_DRM_R128) += r128/
+-obj-$(CONFIG_DRM_RADEON)+= radeon/
+-obj-$(CONFIG_DRM_MGA) += mga/
+-obj-$(CONFIG_DRM_I810) += i810/
+-obj-$(CONFIG_DRM_I915) += i915/
+-obj-$(CONFIG_DRM_MGAG200) += mgag200/
+-obj-$(CONFIG_DRM_CIRRUS_QEMU) += cirrus/
+-obj-$(CONFIG_DRM_SIS) += sis/
+-obj-$(CONFIG_DRM_SAVAGE)+= savage/
+-obj-$(CONFIG_DRM_VMWGFX)+= vmwgfx/
+-obj-$(CONFIG_DRM_VIA) +=via/
+-obj-$(CONFIG_DRM_NOUVEAU) +=nouveau/
+-obj-$(CONFIG_DRM_EXYNOS) +=exynos/
+-obj-$(CONFIG_DRM_GMA500) += gma500/
+-obj-$(CONFIG_DRM_UDL) += udl/
+-obj-$(CONFIG_DRM_AST) += ast/
+-obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/
+-obj-$(CONFIG_DRM_TEGRA) += tegra/
+-obj-$(CONFIG_DRM_OMAP) += omapdrm/
+-obj-$(CONFIG_DRM_TILCDC) += tilcdc/
++obj-$(CONFIG_COMPAT_DRM) += drm.o
++obj-$(CONFIG_COMPAT_DRM_USB) += drm_usb.o
++obj-$(CONFIG_COMPAT_DRM_TTM) += ttm/
++obj-$(CONFIG_COMPAT_DRM_TDFX) += tdfx/
++obj-$(CONFIG_COMPAT_DRM_R128) += r128/
++obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon/
++obj-$(CONFIG_COMPAT_DRM_MGA) += mga/
++obj-$(CONFIG_COMPAT_DRM_I810) += i810/
++obj-$(CONFIG_COMPAT_DRM_I915) += i915/
++obj-$(CONFIG_COMPAT_DRM_MGAG200) += mgag200/
++obj-$(CONFIG_COMPAT_DRM_CIRRUS_QEMU) += cirrus/
++obj-$(CONFIG_COMPAT_DRM_SIS) += sis/
++obj-$(CONFIG_COMPAT_DRM_SAVAGE)+= savage/
++obj-$(CONFIG_COMPAT_DRM_VMWGFX)+= vmwgfx/
++obj-$(CONFIG_COMPAT_DRM_VIA) +=via/
++obj-$(CONFIG_COMPAT_DRM_NOUVEAU) +=nouveau/
++obj-$(CONFIG_COMPAT_DRM_EXYNOS) +=exynos/
++obj-$(CONFIG_COMPAT_DRM_GMA500) += gma500/
++obj-$(CONFIG_COMPAT_DRM_UDL) += udl/
++obj-$(CONFIG_COMPAT_DRM_AST) += ast/
++obj-$(CONFIG_COMPAT_DRM_SHMOBILE) +=shmobile/
++obj-$(CONFIG_COMPAT_DRM_TEGRA) += tegra/
++obj-$(CONFIG_COMPAT_DRM_OMAP) += omapdrm/
++obj-$(CONFIG_COMPAT_DRM_TILCDC) += tilcdc/
+ obj-y += i2c/
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ast_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ast_Makefile
new file mode 100644
index 00000000..cac1b9ef
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ast_Makefile
@@ -0,0 +1,9 @@
+--- a/drivers/gpu/drm/ast/Makefile
++++ b/drivers/gpu/drm/ast/Makefile
+@@ -6,4 +6,4 @@
+
+ ast-y := ast_drv.o ast_main.o ast_mode.o ast_fb.o ast_ttm.o ast_post.o
+
+-obj-$(CONFIG_DRM_AST) := ast.o
+\ No newline at end of file
++obj-$(CONFIG_COMPAT_DRM_AST) := ast.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_cirrus_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_cirrus_Makefile
new file mode 100644
index 00000000..44b17124
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_cirrus_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/gpu/drm/cirrus/Makefile
++++ b/drivers/gpu/drm/cirrus/Makefile
+@@ -2,4 +2,4 @@
+ cirrus-y := cirrus_main.o cirrus_mode.o \
+ cirrus_drv.o cirrus_fbdev.o cirrus_ttm.o
+
+-obj-$(CONFIG_DRM_CIRRUS_QEMU) += cirrus.o
++obj-$(CONFIG_COMPAT_DRM_CIRRUS_QEMU) += cirrus.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_drm_crtc_helper.c b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_drm_crtc_helper.c
new file mode 100644
index 00000000..f64e4758
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_drm_crtc_helper.c
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/drm_crtc_helper.c
++++ b/drivers/gpu/drm/drm_crtc_helper.c
+@@ -152,7 +152,7 @@
+ goto prune;
+ }
+
+-#ifdef CONFIG_DRM_LOAD_EDID_FIRMWARE
++#ifdef CONFIG_COMPAT_DRM_LOAD_EDID_FIRMWARE
+ count = drm_load_edid_firmware(connector);
+ if (count == 0)
+ #endif
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_gma500_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_gma500_Makefile
new file mode 100644
index 00000000..77355a01
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_gma500_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/gpu/drm/gma500/Makefile
++++ b/drivers/gpu/drm/gma500/Makefile
+@@ -49,4 +49,4 @@
+ mdfld_tmd_vid.o \
+ tc35876x-dsi-lvds.o
+
+-obj-$(CONFIG_DRM_GMA500) += gma500_gfx.o
++obj-$(CONFIG_COMPAT_DRM_GMA500) += gma500_gfx.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i2c_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i2c_Makefile
new file mode 100644
index 00000000..ae6689fb
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i2c_Makefile
@@ -0,0 +1,16 @@
+--- a/drivers/gpu/drm/i2c/Makefile
++++ b/drivers/gpu/drm/i2c/Makefile
+@@ -1,10 +1,10 @@
+ ccflags-y := -Iinclude/drm
+
+ ch7006-y := ch7006_drv.o ch7006_mode.o
+-obj-$(CONFIG_DRM_I2C_CH7006) += ch7006.o
++obj-$(CONFIG_COMPAT_DRM_I2C_CH7006) += ch7006.o
+
+ sil164-y := sil164_drv.o
+-obj-$(CONFIG_DRM_I2C_SIL164) += sil164.o
++obj-$(CONFIG_COMPAT_DRM_I2C_SIL164) += sil164.o
+
+ tda998x-y := tda998x_drv.o
+-obj-$(CONFIG_DRM_I2C_NXP_TDA998X) += tda998x.o
++obj-$(CONFIG_COMPAT_DRM_I2C_NXP_TDA998X) += tda998x.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i810_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i810_Makefile
new file mode 100644
index 00000000..e6b76370
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i810_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/gpu/drm/i810/Makefile
++++ b/drivers/gpu/drm/i810/Makefile
+@@ -5,4 +5,4 @@
+ ccflags-y := -Iinclude/drm
+ i810-y := i810_drv.o i810_dma.o
+
+-obj-$(CONFIG_DRM_I810) += i810.o
++obj-$(CONFIG_COMPAT_DRM_I810) += i810.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i915_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i915_Makefile
new file mode 100644
index 00000000..ea86130b
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_i915_Makefile
@@ -0,0 +1,10 @@
+--- a/drivers/gpu/drm/i915/Makefile
++++ b/drivers/gpu/drm/i915/Makefile
+@@ -48,6 +48,6 @@
+
+ i915-$(CONFIG_ACPI) += intel_acpi.o
+
+-obj-$(CONFIG_DRM_I915) += i915.o
++obj-$(CONFIG_COMPAT_DRM_I915) += i915.o
+
+ CFLAGS_i915_trace_points.o := -I$(src)
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_mgag200_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_mgag200_Makefile
new file mode 100644
index 00000000..0f9b190f
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_mgag200_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/gpu/drm/mgag200/Makefile
++++ b/drivers/gpu/drm/mgag200/Makefile
+@@ -2,4 +2,4 @@
+ mgag200-y := mgag200_main.o mgag200_mode.o \
+ mgag200_drv.o mgag200_fb.o mgag200_i2c.o mgag200_ttm.o
+
+-obj-$(CONFIG_DRM_MGAG200) += mgag200.o
++obj-$(CONFIG_COMPAT_DRM_MGAG200) += mgag200.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_Makefile
new file mode 100644
index 00000000..317701d0
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_Makefile
@@ -0,0 +1,12 @@
+--- a/drivers/gpu/drm/nouveau/Makefile
++++ b/drivers/gpu/drm/nouveau/Makefile
+@@ -241,7 +241,7 @@
+ ifdef CONFIG_X86
+ nouveau-$(CONFIG_ACPI) += nouveau_acpi.o
+ endif
+-nouveau-$(CONFIG_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o
++nouveau-$(CONFIG_COMPAT_DRM_NOUVEAU_BACKLIGHT) += nouveau_backlight.o
+ nouveau-$(CONFIG_DEBUG_FS) += nouveau_debugfs.o
+
+-obj-$(CONFIG_DRM_NOUVEAU)+= nouveau.o
++obj-$(CONFIG_COMPAT_DRM_NOUVEAU)+= nouveau.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_nouveau_display.h b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_nouveau_display.h
new file mode 100644
index 00000000..6a2a2a32
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_nouveau_nouveau_display.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/nouveau_display.h
++++ b/drivers/gpu/drm/nouveau/nouveau_display.h
+@@ -73,7 +73,7 @@
+
+ void nouveau_hdmi_mode_set(struct drm_encoder *, struct drm_display_mode *);
+
+-#ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
++#ifdef CONFIG_COMPAT_DRM_NOUVEAU_BACKLIGHT
+ extern int nouveau_backlight_init(struct drm_device *);
+ extern void nouveau_backlight_exit(struct drm_device *);
+ #else
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_radeon_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_radeon_Makefile
new file mode 100644
index 00000000..bcf711c9
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_radeon_Makefile
@@ -0,0 +1,10 @@
+--- a/drivers/gpu/drm/radeon/Makefile
++++ b/drivers/gpu/drm/radeon/Makefile
+@@ -82,6 +82,6 @@
+ radeon-$(CONFIG_VGA_SWITCHEROO) += radeon_atpx_handler.o
+ radeon-$(CONFIG_ACPI) += radeon_acpi.o
+
+-obj-$(CONFIG_DRM_RADEON)+= radeon.o
++obj-$(CONFIG_COMPAT_DRM_RADEON)+= radeon.o
+
+ CFLAGS_radeon_trace_points.o := -I$(src)
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ttm_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ttm_Makefile
new file mode 100644
index 00000000..cf29ee97
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_ttm_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/gpu/drm/ttm/Makefile
++++ b/drivers/gpu/drm/ttm/Makefile
+@@ -11,4 +11,4 @@
+ ttm-y += ttm_page_alloc_dma.o
+ endif
+
+-obj-$(CONFIG_DRM_TTM) += ttm.o
++obj-$(CONFIG_COMPAT_DRM_TTM) += ttm.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_via_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_via_Makefile
new file mode 100644
index 00000000..ec53bbc9
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_via_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/gpu/drm/via/Makefile
++++ b/drivers/gpu/drm/via/Makefile
+@@ -5,4 +5,4 @@
+ ccflags-y := -Iinclude/drm
+ via-y := via_irq.o via_drv.o via_map.o via_mm.o via_dma.o via_verifier.o via_video.o via_dmablit.o
+
+-obj-$(CONFIG_DRM_VIA) +=via.o
++obj-$(CONFIG_COMPAT_DRM_VIA) +=via.o
diff --git a/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_vmwgfx_Makefile b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_vmwgfx_Makefile
new file mode 100644
index 00000000..182dd995
--- /dev/null
+++ b/patches/collateral-evolutions/drm/06-rename-config-options/drivers_gpu_drm_vmwgfx_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/gpu/drm/vmwgfx/Makefile
++++ b/drivers/gpu/drm/vmwgfx/Makefile
+@@ -8,4 +8,4 @@
+ vmwgfx_fence.o vmwgfx_dmabuf.o vmwgfx_scrn.o vmwgfx_context.o \
+ vmwgfx_surface.o
+
+-obj-$(CONFIG_DRM_VMWGFX) := vmwgfx.o
++obj-$(CONFIG_COMPAT_DRM_VMWGFX) := vmwgfx.o
diff --git a/patches/collateral-evolutions/drm/07-intel-gtt.patch b/patches/collateral-evolutions/drm/07-intel-gtt/INFO
index c9e461d8..427fcb7f 100644
--- a/patches/collateral-evolutions/drm/07-intel-gtt.patch
+++ b/patches/collateral-evolutions/drm/07-intel-gtt/INFO
@@ -22,21 +22,3 @@ Date: Thu Jun 7 15:56:03 2012 +0200
Reviewed-by: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -3997,9 +3997,14 @@ i915_gem_init_hw(struct drm_device *dev)
- drm_i915_private_t *dev_priv = dev->dev_private;
- int ret;
-
-- if (INTEL_INFO(dev)->gen < 6 && !intel_enable_gtt())
-+ if (INTEL_INFO(dev)->gen < 6)
- return -EIO;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
-+ if (!intel_enable_gtt())
-+ return -EIO;
-+#endif
-+
- if (IS_HASWELL(dev) && (I915_READ(0x120010) == 1))
- I915_WRITE(0x9008, I915_READ(0x9008) | 0xf0000);
-
diff --git a/patches/collateral-evolutions/drm/07-intel-gtt/drivers_gpu_drm_i915_i915_gem.c b/patches/collateral-evolutions/drm/07-intel-gtt/drivers_gpu_drm_i915_i915_gem.c
new file mode 100644
index 00000000..c4cc8a02
--- /dev/null
+++ b/patches/collateral-evolutions/drm/07-intel-gtt/drivers_gpu_drm_i915_i915_gem.c
@@ -0,0 +1,18 @@
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -3997,9 +3997,14 @@
+ drm_i915_private_t *dev_priv = dev->dev_private;
+ int ret;
+
+- if (INTEL_INFO(dev)->gen < 6 && !intel_enable_gtt())
++ if (INTEL_INFO(dev)->gen < 6)
+ return -EIO;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
++ if (!intel_enable_gtt())
++ return -EIO;
++#endif
++
+ if (IS_HASWELL(dev) && (I915_READ(0x120010) == 1))
+ I915_WRITE(0x9008, I915_READ(0x9008) | 0xf0000);
+
diff --git a/patches/collateral-evolutions/drm/08-shmem_truncate_range.patch b/patches/collateral-evolutions/drm/08-shmem_truncate_range/INFO
index 5112bf63..3b27ff43 100644
--- a/patches/collateral-evolutions/drm/08-shmem_truncate_range.patch
+++ b/patches/collateral-evolutions/drm/08-shmem_truncate_range/INFO
@@ -25,19 +25,3 @@ Date: Mon Jun 27 16:18:19 2011 -0700
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -1620,7 +1620,13 @@ i915_gem_object_truncate(struct drm_i915
- * backing pages, *now*.
- */
- inode = file_inode(obj->base.filp);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
- shmem_truncate_range(inode, 0, (loff_t)-1);
-+#else
-+ truncate_inode_pages(inode->i_mapping, 0);
-+ if (inode->i_op->truncate_range)
-+ inode->i_op->truncate_range(inode, 0, (loff_t)-1);
-+#endif
-
- obj->madv = __I915_MADV_PURGED;
- }
diff --git a/patches/collateral-evolutions/drm/08-shmem_truncate_range/drivers_gpu_drm_i915_i915_gem.c b/patches/collateral-evolutions/drm/08-shmem_truncate_range/drivers_gpu_drm_i915_i915_gem.c
new file mode 100644
index 00000000..cf4c3943
--- /dev/null
+++ b/patches/collateral-evolutions/drm/08-shmem_truncate_range/drivers_gpu_drm_i915_i915_gem.c
@@ -0,0 +1,16 @@
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -1620,7 +1620,13 @@
+ * backing pages, *now*.
+ */
+ inode = file_inode(obj->base.filp);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
+ shmem_truncate_range(inode, 0, (loff_t)-1);
++#else
++ truncate_inode_pages(inode->i_mapping, 0);
++ if (inode->i_op->truncate_range)
++ inode->i_op->truncate_range(inode, 0, (loff_t)-1);
++#endif
+
+ obj->madv = __I915_MADV_PURGED;
+ }
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars.patch b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars.patch
deleted file mode 100644
index 29c77194..00000000
--- a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-Rename CONFIG_NOUVEAU_DEBUG and CONFIG_NOUVEAU_DEBUG_DEFAULT to
-CONFIG_COMPAT_*.
-
---- a/drivers/gpu/drm/nouveau/core/core/option.c
-+++ b/drivers/gpu/drm/nouveau/core/core/option.c
-@@ -86,7 +86,7 @@ nouveau_boolopt(const char *optstr, cons
- int
- nouveau_dbgopt(const char *optstr, const char *sub)
- {
-- int mode = 1, level = CONFIG_NOUVEAU_DEBUG_DEFAULT;
-+ int mode = 1, level = CONFIG_COMPAT_NOUVEAU_DEBUG_DEFAULT;
-
- while (optstr) {
- int len = strcspn(optstr, ",=");
---- a/drivers/gpu/drm/nouveau/core/include/core/client.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/client.h
-@@ -15,7 +15,7 @@ struct nouveau_client {
- static inline struct nouveau_client *
- nv_client(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(obj, NV_CLIENT_CLASS)))
- nv_assert("BAD CAST -> NvClient, %08x", nv_hclass(obj));
- #endif
---- a/drivers/gpu/drm/nouveau/core/include/core/device.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/device.h
-@@ -97,7 +97,7 @@ nv_device(void *obj)
- if (device->parent)
- device = device->parent;
-
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(device, NV_SUBDEV_CLASS) ||
- (nv_hclass(device) & 0xff) != NVDEV_SUBDEV_DEVICE)) {
- nv_assert("BAD CAST -> NvDevice, 0x%08x 0x%08x",
---- a/drivers/gpu/drm/nouveau/core/include/core/engctx.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/engctx.h
-@@ -20,7 +20,7 @@ struct nouveau_engctx {
- static inline struct nouveau_engctx *
- nv_engctx(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(obj, NV_ENGCTX_CLASS)))
- nv_assert("BAD CAST -> NvEngCtx, %08x", nv_hclass(obj));
- #endif
---- a/drivers/gpu/drm/nouveau/core/include/core/engine.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/engine.h
-@@ -22,7 +22,7 @@ struct nouveau_engine {
- static inline struct nouveau_engine *
- nv_engine(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(obj, NV_ENGINE_CLASS)))
- nv_assert("BAD CAST -> NvEngine, %08x", nv_hclass(obj));
- #endif
---- a/drivers/gpu/drm/nouveau/core/include/core/gpuobj.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/gpuobj.h
-@@ -27,7 +27,7 @@ struct nouveau_gpuobj {
- static inline struct nouveau_gpuobj *
- nv_gpuobj(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(obj, NV_GPUOBJ_CLASS)))
- nv_assert("BAD CAST -> NvGpuObj, %08x", nv_hclass(obj));
- #endif
---- a/drivers/gpu/drm/nouveau/core/include/core/namedb.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/namedb.h
-@@ -14,7 +14,7 @@ struct nouveau_namedb {
- static inline struct nouveau_namedb *
- nv_namedb(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(obj, NV_NAMEDB_CLASS)))
- nv_assert("BAD CAST -> NvNameDB, %08x", nv_hclass(obj));
- #endif
---- a/drivers/gpu/drm/nouveau/core/include/core/object.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/object.h
-@@ -20,7 +20,7 @@ struct nouveau_object {
- struct nouveau_object *engine;
- atomic_t refcount;
- atomic_t usecount;
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- #define NOUVEAU_OBJECT_MAGIC 0x75ef0bad
- struct list_head list;
- u32 _magic;
-@@ -30,7 +30,7 @@ struct nouveau_object {
- static inline struct nouveau_object *
- nv_object(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (likely(obj)) {
- struct nouveau_object *object = obj;
- if (unlikely(object->_magic != NOUVEAU_OBJECT_MAGIC))
---- a/drivers/gpu/drm/nouveau/core/include/core/parent.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/parent.h
-@@ -29,7 +29,7 @@ struct nouveau_parent {
- static inline struct nouveau_parent *
- nv_parent(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!(nv_iclass(obj, NV_PARENT_CLASS))))
- nv_assert("BAD CAST -> NvParent, %08x", nv_hclass(obj));
- #endif
---- a/drivers/gpu/drm/nouveau/core/include/core/printk.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/printk.h
-@@ -19,7 +19,7 @@ void __printf(4, 5)
- nv_printk_(struct nouveau_object *, const char *, int, const char *, ...);
-
- #define nv_printk(o,l,f,a...) do { \
-- if (NV_DBG_##l <= CONFIG_NOUVEAU_DEBUG) \
-+ if (NV_DBG_##l <= CONFIG_COMPAT_NOUVEAU_DEBUG) \
- nv_printk_(nv_object(o), NV_PRINTK_##l, NV_DBG_##l, f, ##a); \
- } while(0)
-
-@@ -32,7 +32,7 @@ nv_printk_(struct nouveau_object *, cons
- #define nv_spam(o,f,a...) nv_printk((o), SPAM, f, ##a)
-
- #define nv_assert(f,a...) do { \
-- if (NV_DBG_FATAL <= CONFIG_NOUVEAU_DEBUG) \
-+ if (NV_DBG_FATAL <= CONFIG_COMPAT_NOUVEAU_DEBUG) \
- nv_printk_(NULL, NV_PRINTK_FATAL, NV_DBG_FATAL, f "\n", ##a); \
- BUG_ON(1); \
- } while(0)
---- a/drivers/gpu/drm/nouveau/core/include/core/subdev.h
-+++ b/drivers/gpu/drm/nouveau/core/include/core/subdev.h
-@@ -20,7 +20,7 @@ struct nouveau_subdev {
- static inline struct nouveau_subdev *
- nv_subdev(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(obj, NV_SUBDEV_CLASS)))
- nv_assert("BAD CAST -> NvSubDev, %08x", nv_hclass(obj));
- #endif
---- a/drivers/gpu/drm/nouveau/core/include/subdev/instmem.h
-+++ b/drivers/gpu/drm/nouveau/core/include/subdev/instmem.h
-@@ -16,7 +16,7 @@ struct nouveau_instobj {
- static inline struct nouveau_instobj *
- nv_memobj(void *obj)
- {
--#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
-+#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
- if (unlikely(!nv_iclass(obj, NV_MEMOBJ_CLASS)))
- nv_assert("BAD CAST -> NvMemObj, %08x", nv_hclass(obj));
- #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/INFO b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/INFO
new file mode 100644
index 00000000..d533c9c8
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/INFO
@@ -0,0 +1,3 @@
+Rename CONFIG_NOUVEAU_DEBUG and CONFIG_NOUVEAU_DEBUG_DEFAULT to
+CONFIG_COMPAT_*.
+
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_core_option.c b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_core_option.c
new file mode 100644
index 00000000..f47d37ee
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_core_option.c
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/core/option.c
++++ b/drivers/gpu/drm/nouveau/core/core/option.c
+@@ -86,7 +86,7 @@
+ int
+ nouveau_dbgopt(const char *optstr, const char *sub)
+ {
+- int mode = 1, level = CONFIG_NOUVEAU_DEBUG_DEFAULT;
++ int mode = 1, level = CONFIG_COMPAT_NOUVEAU_DEBUG_DEFAULT;
+
+ while (optstr) {
+ int len = strcspn(optstr, ",=");
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_client.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_client.h
new file mode 100644
index 00000000..243fc8a3
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_client.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/client.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/client.h
+@@ -15,7 +15,7 @@
+ static inline struct nouveau_client *
+ nv_client(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(obj, NV_CLIENT_CLASS)))
+ nv_assert("BAD CAST -> NvClient, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_device.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_device.h
new file mode 100644
index 00000000..111f8bd7
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_device.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/device.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/device.h
+@@ -97,7 +97,7 @@
+ if (device->parent)
+ device = device->parent;
+
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(device, NV_SUBDEV_CLASS) ||
+ (nv_hclass(device) & 0xff) != NVDEV_SUBDEV_DEVICE)) {
+ nv_assert("BAD CAST -> NvDevice, 0x%08x 0x%08x",
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engctx.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engctx.h
new file mode 100644
index 00000000..ff605576
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engctx.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/engctx.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/engctx.h
+@@ -20,7 +20,7 @@
+ static inline struct nouveau_engctx *
+ nv_engctx(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(obj, NV_ENGCTX_CLASS)))
+ nv_assert("BAD CAST -> NvEngCtx, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engine.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engine.h
new file mode 100644
index 00000000..86f12477
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_engine.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/engine.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/engine.h
+@@ -22,7 +22,7 @@
+ static inline struct nouveau_engine *
+ nv_engine(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(obj, NV_ENGINE_CLASS)))
+ nv_assert("BAD CAST -> NvEngine, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_gpuobj.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_gpuobj.h
new file mode 100644
index 00000000..e664d523
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_gpuobj.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/gpuobj.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/gpuobj.h
+@@ -27,7 +27,7 @@
+ static inline struct nouveau_gpuobj *
+ nv_gpuobj(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(obj, NV_GPUOBJ_CLASS)))
+ nv_assert("BAD CAST -> NvGpuObj, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_namedb.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_namedb.h
new file mode 100644
index 00000000..91faab0d
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_namedb.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/namedb.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/namedb.h
+@@ -14,7 +14,7 @@
+ static inline struct nouveau_namedb *
+ nv_namedb(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(obj, NV_NAMEDB_CLASS)))
+ nv_assert("BAD CAST -> NvNameDB, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_object.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_object.h
new file mode 100644
index 00000000..ede1ddac
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_object.h
@@ -0,0 +1,20 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/object.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/object.h
+@@ -20,7 +20,7 @@
+ struct nouveau_object *engine;
+ atomic_t refcount;
+ atomic_t usecount;
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ #define NOUVEAU_OBJECT_MAGIC 0x75ef0bad
+ struct list_head list;
+ u32 _magic;
+@@ -30,7 +30,7 @@
+ static inline struct nouveau_object *
+ nv_object(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (likely(obj)) {
+ struct nouveau_object *object = obj;
+ if (unlikely(object->_magic != NOUVEAU_OBJECT_MAGIC))
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_parent.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_parent.h
new file mode 100644
index 00000000..087aead6
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_parent.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/parent.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/parent.h
+@@ -29,7 +29,7 @@
+ static inline struct nouveau_parent *
+ nv_parent(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!(nv_iclass(obj, NV_PARENT_CLASS))))
+ nv_assert("BAD CAST -> NvParent, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_printk.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_printk.h
new file mode 100644
index 00000000..037b31cf
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_printk.h
@@ -0,0 +1,20 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/printk.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/printk.h
+@@ -19,7 +19,7 @@
+ nv_printk_(struct nouveau_object *, const char *, int, const char *, ...);
+
+ #define nv_printk(o,l,f,a...) do { \
+- if (NV_DBG_##l <= CONFIG_NOUVEAU_DEBUG) \
++ if (NV_DBG_##l <= CONFIG_COMPAT_NOUVEAU_DEBUG) \
+ nv_printk_(nv_object(o), NV_PRINTK_##l, NV_DBG_##l, f, ##a); \
+ } while(0)
+
+@@ -32,7 +32,7 @@
+ #define nv_spam(o,f,a...) nv_printk((o), SPAM, f, ##a)
+
+ #define nv_assert(f,a...) do { \
+- if (NV_DBG_FATAL <= CONFIG_NOUVEAU_DEBUG) \
++ if (NV_DBG_FATAL <= CONFIG_COMPAT_NOUVEAU_DEBUG) \
+ nv_printk_(NULL, NV_PRINTK_FATAL, NV_DBG_FATAL, f "\n", ##a); \
+ BUG_ON(1); \
+ } while(0)
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_subdev.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_subdev.h
new file mode 100644
index 00000000..c773d020
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_core_subdev.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/core/subdev.h
++++ b/drivers/gpu/drm/nouveau/core/include/core/subdev.h
+@@ -20,7 +20,7 @@
+ static inline struct nouveau_subdev *
+ nv_subdev(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(obj, NV_SUBDEV_CLASS)))
+ nv_assert("BAD CAST -> NvSubDev, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_subdev_instmem.h b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_subdev_instmem.h
new file mode 100644
index 00000000..30b68202
--- /dev/null
+++ b/patches/collateral-evolutions/drm/09-nouveau-compatify-kconfig-vars/drivers_gpu_drm_nouveau_core_include_subdev_instmem.h
@@ -0,0 +1,11 @@
+--- a/drivers/gpu/drm/nouveau/core/include/subdev/instmem.h
++++ b/drivers/gpu/drm/nouveau/core/include/subdev/instmem.h
+@@ -16,7 +16,7 @@
+ static inline struct nouveau_instobj *
+ nv_memobj(void *obj)
+ {
+-#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
++#if CONFIG_COMPAT_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
+ if (unlikely(!nv_iclass(obj, NV_MEMOBJ_CLASS)))
+ nv_assert("BAD CAST -> NvMemObj, %08x", nv_hclass(obj));
+ #endif
diff --git a/patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check/INFO b/patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check/INFO
new file mode 100644
index 00000000..28db5d28
--- /dev/null
+++ b/patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check/INFO
@@ -0,0 +1,3 @@
+acpi_get_table_with_size() was exported with kernels >= 3.6. Revert the
+size checking for kernels < 3.6.
+
diff --git a/patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check.patch b/patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check/drivers_gpu_drm_radeon_radeon_bios.c
index 8adaeb35..1bca6e82 100644
--- a/patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check.patch
+++ b/patches/collateral-evolutions/drm/10-radeon-revert-acpi-table-size-check/drivers_gpu_drm_radeon_radeon_bios.c
@@ -1,9 +1,6 @@
-acpi_get_table_with_size() was exported with kernels >= 3.6. Revert the
-size checking for kernels < 3.6.
-
--- a/drivers/gpu/drm/radeon/radeon_bios.c
+++ b/drivers/gpu/drm/radeon/radeon_bios.c
-@@ -554,12 +554,21 @@ static bool radeon_acpi_vfct_bios(struct
+@@ -554,12 +554,21 @@
{
bool ret = false;
struct acpi_table_header *hdr;
diff --git a/patches/collateral-evolutions/drm/11-videomode-includes.patch b/patches/collateral-evolutions/drm/11-videomode-includes/drivers_gpu_drm_drm_modes.c
index 1858cc31..1858cc31 100644
--- a/patches/collateral-evolutions/drm/11-videomode-includes.patch
+++ b/patches/collateral-evolutions/drm/11-videomode-includes/drivers_gpu_drm_drm_modes.c
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt.patch b/patches/collateral-evolutions/drm/98-pr_fmt.patch
deleted file mode 100644
index 3c922450..00000000
--- a/patches/collateral-evolutions/drm/98-pr_fmt.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-
-Undef/define/include printk.h for fixing redefinition warnings
-during build.
-
-Patch adapted from compat-wireless tree.
-
---- a/drivers/gpu/drm/drm_fb_helper.c
-+++ b/drivers/gpu/drm/drm_fb_helper.c
-@@ -27,9 +27,11 @@
- * Dave Airlie <airlied@linux.ie>
- * Jesse Barnes <jesse.barnes@intel.com>
- */
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/sysrq.h>
- #include <linux/slab.h>
- #include <linux/fb.h>
---- a/drivers/gpu/drm/ttm/ttm_agp_backend.c
-+++ b/drivers/gpu/drm/ttm/ttm_agp_backend.c
-@@ -29,8 +29,10 @@
- * Keith Packard.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
-+#include <linux/printk.h>
- #include <drm/ttm/ttm_module.h>
- #include <drm/ttm/ttm_bo_driver.h>
- #include <drm/ttm/ttm_page_alloc.h>
---- a/drivers/gpu/drm/ttm/ttm_bo.c
-+++ b/drivers/gpu/drm/ttm/ttm_bo.c
-@@ -28,11 +28,13 @@
- * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
- #include <drm/ttm/ttm_module.h>
- #include <drm/ttm/ttm_bo_driver.h>
- #include <drm/ttm/ttm_placement.h>
-+#include <linux/printk.h>
- #include <linux/jiffies.h>
- #include <linux/slab.h>
- #include <linux/sched.h>
---- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
-+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
-@@ -28,8 +28,10 @@
- * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
-+#include <linux/printk.h>
- #include <ttm/ttm_module.h>
- #include <ttm/ttm_bo_driver.h>
- #include <ttm/ttm_placement.h>
---- a/drivers/gpu/drm/ttm/ttm_memory.c
-+++ b/drivers/gpu/drm/ttm/ttm_memory.c
-@@ -25,11 +25,13 @@
- *
- **************************************************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
- #include <drm/ttm/ttm_memory.h>
- #include <drm/ttm/ttm_module.h>
- #include <drm/ttm/ttm_page_alloc.h>
-+#include <linux/printk.h>
- #include <linux/spinlock.h>
- #include <linux/sched.h>
- #include <linux/wait.h>
---- a/drivers/gpu/drm/ttm/ttm_object.c
-+++ b/drivers/gpu/drm/ttm/ttm_object.c
-@@ -49,10 +49,12 @@
- * for fast lookup of ref objects given a base object.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
- #include <drm/ttm/ttm_object.h>
- #include <drm/ttm/ttm_module.h>
-+#include <linux/printk.h>
- #include <linux/list.h>
- #include <linux/spinlock.h>
- #include <linux/slab.h>
---- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
-+++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
-@@ -31,8 +31,10 @@
- * - doesn't track currently in use pages
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
-+#include <linux/printk.h>
- #include <linux/list.h>
- #include <linux/spinlock.h>
- #include <linux/highmem.h>
---- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
-+++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
-@@ -33,8 +33,10 @@
- * when freed).
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
-+#include <linux/printk.h>
- #include <linux/dma-mapping.h>
- #include <linux/list.h>
- #include <linux/seq_file.h> /* for seq_printf */
---- a/drivers/gpu/drm/ttm/ttm_tt.c
-+++ b/drivers/gpu/drm/ttm/ttm_tt.c
-@@ -28,8 +28,10 @@
- * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "[TTM] " fmt
-
-+#include <linux/printk.h>
- #include <linux/sched.h>
- #include <linux/highmem.h>
- #include <linux/pagemap.h>
---- a/drivers/gpu/drm/i915/i915_dma.c
-+++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -26,6 +26,7 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <drm/drmP.h>
-@@ -35,6 +36,7 @@
- #include <drm/i915_drm.h>
- #include "i915_drv.h"
- #include "i915_trace.h"
-+#include <linux/printk.h>
- #include <linux/pci.h>
- #include <linux/vgaarb.h>
- #include <linux/acpi.h>
---- a/drivers/gpu/drm/i915/i915_irq.c
-+++ b/drivers/gpu/drm/i915/i915_irq.c
-@@ -26,8 +26,10 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/sysrq.h>
- #include <linux/slab.h>
- #include <drm/drmP.h>
---- a/drivers/gpu/drm/i915/intel_opregion.c
-+++ b/drivers/gpu/drm/i915/intel_opregion.c
-@@ -25,8 +25,10 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/acpi.h>
- #include <linux/acpi_io.h>
- #include <acpi/video.h>
---- a/drivers/gpu/drm/i915/intel_panel.c
-+++ b/drivers/gpu/drm/i915/intel_panel.c
-@@ -28,8 +28,10 @@
- * Chris Wilson <chris@chris-wilson.co.uk>
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/moduleparam.h>
- #include "intel_drv.h"
-
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/INFO b/patches/collateral-evolutions/drm/98-pr_fmt/INFO
new file mode 100644
index 00000000..d7895f41
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/INFO
@@ -0,0 +1,6 @@
+
+Undef/define/include printk.h for fixing redefinition warnings
+during build.
+
+Patch adapted from compat-wireless tree.
+
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_drm_fb_helper.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_drm_fb_helper.c
new file mode 100644
index 00000000..49af9e73
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_drm_fb_helper.c
@@ -0,0 +1,14 @@
+--- a/drivers/gpu/drm/drm_fb_helper.c
++++ b/drivers/gpu/drm/drm_fb_helper.c
+@@ -27,9 +27,11 @@
+ * Dave Airlie <airlied@linux.ie>
+ * Jesse Barnes <jesse.barnes@intel.com>
+ */
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/sysrq.h>
+ #include <linux/slab.h>
+ #include <linux/fb.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_dma.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_dma.c
new file mode 100644
index 00000000..df64c810
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_dma.c
@@ -0,0 +1,18 @@
+--- a/drivers/gpu/drm/i915/i915_dma.c
++++ b/drivers/gpu/drm/i915/i915_dma.c
+@@ -26,6 +26,7 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <drm/drmP.h>
+@@ -35,6 +36,7 @@
+ #include <drm/i915_drm.h>
+ #include "i915_drv.h"
+ #include "i915_trace.h"
++#include <linux/printk.h>
+ #include <linux/pci.h>
+ #include <linux/vgaarb.h>
+ #include <linux/acpi.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_irq.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_irq.c
new file mode 100644
index 00000000..923a8b49
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_i915_irq.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -26,8 +26,10 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/sysrq.h>
+ #include <linux/slab.h>
+ #include <drm/drmP.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_opregion.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_opregion.c
new file mode 100644
index 00000000..8279c93b
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_opregion.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/i915/intel_opregion.c
++++ b/drivers/gpu/drm/i915/intel_opregion.c
+@@ -25,8 +25,10 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/acpi.h>
+ #include <linux/acpi_io.h>
+ #include <acpi/video.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_panel.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_panel.c
new file mode 100644
index 00000000..3a87d9f7
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_i915_intel_panel.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/i915/intel_panel.c
++++ b/drivers/gpu/drm/i915/intel_panel.c
+@@ -28,8 +28,10 @@
+ * Chris Wilson <chris@chris-wilson.co.uk>
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/moduleparam.h>
+ #include "intel_drv.h"
+
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_agp_backend.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_agp_backend.c
new file mode 100644
index 00000000..d4a791e4
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_agp_backend.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/ttm/ttm_agp_backend.c
++++ b/drivers/gpu/drm/ttm/ttm_agp_backend.c
+@@ -29,8 +29,10 @@
+ * Keith Packard.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
++#include <linux/printk.h>
+ #include <drm/ttm/ttm_module.h>
+ #include <drm/ttm/ttm_bo_driver.h>
+ #include <drm/ttm/ttm_page_alloc.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo.c
new file mode 100644
index 00000000..ac5cb1d6
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo.c
@@ -0,0 +1,16 @@
+--- a/drivers/gpu/drm/ttm/ttm_bo.c
++++ b/drivers/gpu/drm/ttm/ttm_bo.c
+@@ -28,11 +28,13 @@
+ * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
+ #include <drm/ttm/ttm_module.h>
+ #include <drm/ttm/ttm_bo_driver.h>
+ #include <drm/ttm/ttm_placement.h>
++#include <linux/printk.h>
+ #include <linux/jiffies.h>
+ #include <linux/slab.h>
+ #include <linux/sched.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo_vm.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo_vm.c
new file mode 100644
index 00000000..45c5f053
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_bo_vm.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
++++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
+@@ -28,8 +28,10 @@
+ * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
++#include <linux/printk.h>
+ #include <ttm/ttm_module.h>
+ #include <ttm/ttm_bo_driver.h>
+ #include <ttm/ttm_placement.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_memory.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_memory.c
new file mode 100644
index 00000000..ce492cb5
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_memory.c
@@ -0,0 +1,16 @@
+--- a/drivers/gpu/drm/ttm/ttm_memory.c
++++ b/drivers/gpu/drm/ttm/ttm_memory.c
+@@ -25,11 +25,13 @@
+ *
+ **************************************************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
+ #include <drm/ttm/ttm_memory.h>
+ #include <drm/ttm/ttm_module.h>
+ #include <drm/ttm/ttm_page_alloc.h>
++#include <linux/printk.h>
+ #include <linux/spinlock.h>
+ #include <linux/sched.h>
+ #include <linux/wait.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_object.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_object.c
new file mode 100644
index 00000000..7c8ed998
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_object.c
@@ -0,0 +1,15 @@
+--- a/drivers/gpu/drm/ttm/ttm_object.c
++++ b/drivers/gpu/drm/ttm/ttm_object.c
+@@ -49,10 +49,12 @@
+ * for fast lookup of ref objects given a base object.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
+ #include <drm/ttm/ttm_object.h>
+ #include <drm/ttm/ttm_module.h>
++#include <linux/printk.h>
+ #include <linux/list.h>
+ #include <linux/spinlock.h>
+ #include <linux/slab.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc.c
new file mode 100644
index 00000000..35565383
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
++++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
+@@ -31,8 +31,10 @@
+ * - doesn't track currently in use pages
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
++#include <linux/printk.h>
+ #include <linux/list.h>
+ #include <linux/spinlock.h>
+ #include <linux/highmem.h>
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc_dma.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc_dma.c
new file mode 100644
index 00000000..a2c700a1
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_page_alloc_dma.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
++++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
+@@ -33,8 +33,10 @@
+ * when freed).
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
++#include <linux/printk.h>
+ #include <linux/dma-mapping.h>
+ #include <linux/list.h>
+ #include <linux/seq_file.h> /* for seq_printf */
diff --git a/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_tt.c b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_tt.c
new file mode 100644
index 00000000..2925d7db
--- /dev/null
+++ b/patches/collateral-evolutions/drm/98-pr_fmt/drivers_gpu_drm_ttm_ttm_tt.c
@@ -0,0 +1,13 @@
+--- a/drivers/gpu/drm/ttm/ttm_tt.c
++++ b/drivers/gpu/drm/ttm/ttm_tt.c
+@@ -28,8 +28,10 @@
+ * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "[TTM] " fmt
+
++#include <linux/printk.h>
+ #include <linux/sched.h>
+ #include <linux/highmem.h>
+ #include <linux/pagemap.h>
diff --git a/patches/collateral-evolutions/drm/99-change-makefile/INFO b/patches/collateral-evolutions/drm/99-change-makefile/INFO
new file mode 100644
index 00000000..e64c528b
--- /dev/null
+++ b/patches/collateral-evolutions/drm/99-change-makefile/INFO
@@ -0,0 +1,2 @@
+Remove drivers that we do not want to build from gpu/drm/Makefile
+
diff --git a/patches/collateral-evolutions/drm/99-change-makefile.patch b/patches/collateral-evolutions/drm/99-change-makefile/drivers_gpu_drm_Makefile
index 00fa2be6..527c8572 100644
--- a/patches/collateral-evolutions/drm/99-change-makefile.patch
+++ b/patches/collateral-evolutions/drm/99-change-makefile/drivers_gpu_drm_Makefile
@@ -1,8 +1,6 @@
-Remove drivers that we do not want to build from gpu/drm/Makefile
-
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
-@@ -31,25 +31,14 @@ CFLAGS_drm_trace_points.o := -I$(src)
+@@ -31,25 +31,14 @@
obj-$(CONFIG_COMPAT_DRM) += drm.o
obj-$(CONFIG_COMPAT_DRM_USB) += drm_usb.o
obj-$(CONFIG_COMPAT_DRM_TTM) += ttm/
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops.patch b/patches/collateral-evolutions/network/0001-netdev_ops.patch
deleted file mode 100644
index e13fea7c..00000000
--- a/patches/collateral-evolutions/network/0001-netdev_ops.patch
+++ /dev/null
@@ -1,290 +0,0 @@
-
-This patch backports the struct net_device_ops changes added on 2.6.29.
-
-If we add the compat.git netdev_attach_ops() implementation
-for newer kernels upstream it means we do not have to use this
-patch at all for older kernels.
-
-mcgrof@tux ~/linux-stable (git::master)$ git describe --contains d314774cf2cd5dfeb39a00d37deee65d4c627927
-v2.6.29-rc1~581^2~677
-
-commit d314774cf2cd5dfeb39a00d37deee65d4c627927
-Author: Stephen Hemminger <shemminger@vyatta.com>
-Date: Wed Nov 19 21:32:24 2008 -0800
-
- netdev: network device operations infrastructure
-
- This patch changes the network device internal API to move adminstrative
- operations out of the network device structure and into a separate structure.
-
- This patch involves some hackery to maintain compatablity between the
- new and old model, so all 300+ drivers don't have to be changed at once.
- For drivers that aren't converted yet, the netdevice_ops virt function list
- still resides in the net_device structure. For old protocols, the new
- net_device_ops are copied out to the old net_device pointers.
-
- After the transistion is completed the nag message can be changed to
- an WARN_ON, and the compatiablity code can be made configurable.
-
- Some function pointers aren't moved:
- * destructor can't be in net_device_ops because
- it may need to be referenced after the module is unloaded.
- * neighbor setup is manipulated in a couple of places that need special
- consideration
- * hard_start_xmit is in the fast path for transmit.
-
- Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
- Signed-off-by: David S. Miller <davem@davemloft.net>
-
---- a/drivers/net/usb/rndis_host.c
-+++ b/drivers/net/usb/rndis_host.c
-@@ -358,7 +358,7 @@ generic_rndis_bind(struct usbnet *dev, s
- dev->rx_urb_size &= ~(dev->maxpacket - 1);
- u.init->max_transfer_size = cpu_to_le32(dev->rx_urb_size);
-
-- net->netdev_ops = &rndis_netdev_ops;
-+ netdev_attach_ops(net, &rndis_netdev_ops);
-
- retval = rndis_command(dev, u.header, CONTROL_BUFFER_SIZE);
- if (unlikely(retval < 0)) {
---- a/drivers/net/usb/usbnet.c
-+++ b/drivers/net/usb/usbnet.c
-@@ -1446,7 +1446,7 @@ usbnet_probe (struct usb_interface *udev
- net->features |= NETIF_F_HIGHDMA;
- #endif
-
-- net->netdev_ops = &usbnet_netdev_ops;
-+ netdev_attach_ops(net, &usbnet_netdev_ops);
- net->watchdog_timeo = TX_TIMEOUT_JIFFIES;
- net->ethtool_ops = &usbnet_ethtool_ops;
-
---- a/drivers/net/wireless/ath/ath6kl/main.c
-+++ b/drivers/net/wireless/ath/ath6kl/main.c
-@@ -1289,7 +1289,7 @@ static const struct net_device_ops ath6k
-
- void init_netdev(struct net_device *dev)
- {
-- dev->netdev_ops = &ath6kl_netdev_ops;
-+ netdev_attach_ops(dev, &ath6kl_netdev_ops);
- dev->destructor = free_netdev;
- dev->watchdog_timeo = ATH6KL_TX_TIMEOUT;
-
---- a/drivers/net/wireless/ath/wil6210/netdev.c
-+++ b/drivers/net/wireless/ath/wil6210/netdev.c
-@@ -76,7 +76,7 @@ void *wil_if_alloc(struct device *dev, v
- goto out_priv;
- }
-
-- ndev->netdev_ops = &wil_netdev_ops;
-+ netdev_attach_ops(ndev, &wil_netdev_ops);
- ndev->ieee80211_ptr = wdev;
- SET_NETDEV_DEV(ndev, wiphy_dev(wdev->wiphy));
- wdev->netdev = ndev;
---- a/drivers/net/wireless/rndis_wlan.c
-+++ b/drivers/net/wireless/rndis_wlan.c
-@@ -3438,7 +3438,7 @@ static int rndis_wlan_bind(struct usbnet
- * rndis_host wants to avoid all OID as much as possible
- * so do promisc/multicast handling in rndis_wlan.
- */
-- usbdev->net->netdev_ops = &rndis_wlan_netdev_ops;
-+ netdev_attach_ops(usbdev->net, &rndis_wlan_netdev_ops);
-
- tmp = cpu_to_le32(RNDIS_PACKET_TYPE_DIRECTED | RNDIS_PACKET_TYPE_BROADCAST);
- retval = rndis_set_oid(usbdev,
---- a/drivers/net/ethernet/broadcom/b44.c
-+++ b/drivers/net/ethernet/broadcom/b44.c
-@@ -2170,7 +2170,7 @@ static int b44_init_one(struct ssb_devic
- bp->rx_pending = B44_DEF_RX_RING_PENDING;
- bp->tx_pending = B44_DEF_TX_RING_PENDING;
-
-- dev->netdev_ops = &b44_netdev_ops;
-+ netdev_attach_ops(dev, &b44_netdev_ops);
- netif_napi_add(dev, &bp->napi, b44_poll, 64);
- dev->watchdog_timeo = B44_TX_TIMEOUT;
- dev->irq = sdev->irq;
---- a/drivers/net/wireless/ipw2x00/ipw2100.c
-+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -6086,7 +6086,7 @@ static struct net_device *ipw2100_alloc_
- priv->ieee->perfect_rssi = -20;
- priv->ieee->worst_rssi = -85;
-
-- dev->netdev_ops = &ipw2100_netdev_ops;
-+ netdev_attach_ops(dev, &ipw2100_netdev_ops);
- dev->ethtool_ops = &ipw2100_ethtool_ops;
- dev->wireless_handlers = &ipw2100_wx_handler_def;
- priv->wireless_data.libipw = priv->ieee;
---- a/drivers/net/wireless/ipw2x00/ipw2200.c
-+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
-@@ -11680,7 +11680,7 @@ static int ipw_prom_alloc(struct ipw_pri
- memcpy(priv->prom_net_dev->dev_addr, priv->mac_addr, ETH_ALEN);
-
- priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP;
-- priv->prom_net_dev->netdev_ops = &ipw_prom_netdev_ops;
-+ netdev_attach_ops(priv->prom_net_dev, &ipw_prom_netdev_ops);
-
- priv->prom_priv->ieee->iw_mode = IW_MODE_MONITOR;
- SET_NETDEV_DEV(priv->prom_net_dev, &priv->pci_dev->dev);
-@@ -11818,7 +11818,7 @@ static int ipw_pci_probe(struct pci_dev
- priv->ieee->perfect_rssi = -20;
- priv->ieee->worst_rssi = -85;
-
-- net_dev->netdev_ops = &ipw_netdev_ops;
-+ netdev_attach_ops(net_dev, &ipw_netdev_ops);
- priv->wireless_data.spy_data = &priv->ieee->spy_data;
- net_dev->wireless_data = &priv->wireless_data;
- net_dev->wireless_handlers = &ipw_wx_handler_def;
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -993,7 +993,7 @@ struct lbs_private *lbs_add_card(void *c
- wdev->netdev = dev;
- priv->dev = dev;
-
-- dev->netdev_ops = &lbs_netdev_ops;
-+ netdev_attach_ops(dev, &lbs_netdev_ops);
- dev->watchdog_timeo = 5 * HZ;
- dev->ethtool_ops = &lbs_ethtool_ops;
- dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
---- a/drivers/net/wireless/libertas/mesh.c
-+++ b/drivers/net/wireless/libertas/mesh.c
-@@ -1015,7 +1015,7 @@ static int lbs_add_mesh(struct lbs_priva
- mesh_dev->ieee80211_ptr = mesh_wdev;
- priv->mesh_dev = mesh_dev;
-
-- mesh_dev->netdev_ops = &mesh_netdev_ops;
-+ netdev_attach_ops(mesh_dev, &mesh_netdev_ops);
- mesh_dev->ethtool_ops = &lbs_ethtool_ops;
- memcpy(mesh_dev->dev_addr, priv->dev->dev_addr, ETH_ALEN);
-
---- a/drivers/net/wireless/mac80211_hwsim.c
-+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1695,7 +1695,7 @@ static const struct net_device_ops hwsim
-
- static void hwsim_mon_setup(struct net_device *dev)
- {
-- dev->netdev_ops = &hwsim_netdev_ops;
-+ netdev_attach_ops(dev, &hwsim_netdev_ops);
- dev->destructor = free_netdev;
- ether_setup(dev);
- dev->tx_queue_len = 0;
---- a/drivers/net/wireless/mwifiex/main.c
-+++ b/drivers/net/wireless/mwifiex/main.c
-@@ -654,7 +654,7 @@ static const struct net_device_ops mwifi
- void mwifiex_init_priv_params(struct mwifiex_private *priv,
- struct net_device *dev)
- {
-- dev->netdev_ops = &mwifiex_netdev_ops;
-+ netdev_attach_ops(dev, &mwifiex_netdev_ops);
- /* Initialize private structure */
- priv->current_key_index = 0;
- priv->media_connected = false;
---- a/net/bluetooth/bnep/netdev.c
-+++ b/net/bluetooth/bnep/netdev.c
-@@ -223,7 +223,7 @@ void bnep_net_setup(struct net_device *d
-
- ether_setup(dev);
- dev->priv_flags &= ~IFF_TX_SKB_SHARING;
-- dev->netdev_ops = &bnep_netdev_ops;
-+ netdev_attach_ops(dev, &bnep_netdev_ops);
-
- dev->watchdog_timeo = HZ * 2;
- }
---- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-@@ -2207,7 +2207,7 @@ static int atl1e_init_netdev(struct net_
- SET_NETDEV_DEV(netdev, &pdev->dev);
- pci_set_drvdata(pdev, netdev);
-
-- netdev->netdev_ops = &atl1e_netdev_ops;
-+ netdev_attach_ops(netdev, &atl1e_netdev_ops);
-
- netdev->watchdog_timeo = AT_TX_WATCHDOG;
- atl1e_set_ethtool_ops(netdev);
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2470,7 +2470,7 @@ static int atl1c_init_netdev(struct net_
- SET_NETDEV_DEV(netdev, &pdev->dev);
- pci_set_drvdata(pdev, netdev);
-
-- netdev->netdev_ops = &atl1c_netdev_ops;
-+ netdev_attach_ops(netdev, &atl1c_netdev_ops);
- netdev->watchdog_timeo = AT_TX_WATCHDOG;
- atl1c_set_ethtool_ops(netdev);
-
---- a/drivers/net/ethernet/atheros/atlx/atl1.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
-@@ -3009,7 +3009,7 @@ static int atl1_probe(struct pci_dev *pd
- adapter->mii.phy_id_mask = 0x1f;
- adapter->mii.reg_num_mask = 0x1f;
-
-- netdev->netdev_ops = &atl1_netdev_ops;
-+ netdev_attach_ops(netdev, &atl1_netdev_ops);
- netdev->watchdog_timeo = 5 * HZ;
- netif_napi_add(netdev, &adapter->napi, atl1_rings_clean, 64);
-
---- a/drivers/net/ethernet/atheros/atlx/atl2.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
-@@ -1396,7 +1396,7 @@ static int atl2_probe(struct pci_dev *pd
-
- atl2_setup_pcicmd(pdev);
-
-- netdev->netdev_ops = &atl2_netdev_ops;
-+ netdev_attach_ops(netdev, &atl2_netdev_ops);
- atl2_set_ethtool_ops(netdev);
- netdev->watchdog_timeo = 5 * HZ;
- strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -1017,7 +1017,7 @@ static void ieee80211_if_setup(struct ne
- {
- ether_setup(dev);
- dev->priv_flags &= ~IFF_TX_SKB_SHARING;
-- dev->netdev_ops = &ieee80211_dataif_ops;
-+ netdev_attach_ops(dev, &ieee80211_dataif_ops);
- dev->destructor = free_netdev;
- }
-
-@@ -1180,7 +1180,7 @@ static void ieee80211_setup_sdata(struct
-
- /* only monitor/p2p-device differ */
- if (sdata->dev) {
-- sdata->dev->netdev_ops = &ieee80211_dataif_ops;
-+ netdev_attach_ops(sdata->dev, &ieee80211_dataif_ops);
- sdata->dev->type = ARPHRD_ETHER;
- }
-
-@@ -1218,7 +1218,7 @@ static void ieee80211_setup_sdata(struct
- break;
- case NL80211_IFTYPE_MONITOR:
- sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
-- sdata->dev->netdev_ops = &ieee80211_monitorif_ops;
-+ netdev_attach_ops(sdata->dev, &ieee80211_monitorif_ops);
- sdata->u.mntr_flags = MONITOR_FLAG_CONTROL |
- MONITOR_FLAG_OTHER_BSS;
- break;
---- a/drivers/net/wireless/orinoco/main.c
-+++ b/drivers/net/wireless/orinoco/main.c
-@@ -2272,9 +2272,9 @@ int orinoco_if_add(struct orinoco_privat
- #endif
- /* Default to standard ops if not set */
- if (ops)
-- dev->netdev_ops = ops;
-+ netdev_attach_ops(dev, ops);
- else
-- dev->netdev_ops = &orinoco_netdev_ops;
-+ netdev_attach_ops(dev, &orinoco_netdev_ops);
-
- /* we use the default eth_mac_addr for setting the MAC addr */
-
---- a/net/wireless/wext-core.c
-+++ b/net/wireless/wext-core.c
-@@ -925,9 +925,7 @@ static int wireless_process_ioctl(struct
- return private(dev, iwr, cmd, info, handler);
- }
- /* Old driver API : call driver ioctl handler */
-- if (dev->netdev_ops->ndo_do_ioctl)
-- return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd);
-- return -EOPNOTSUPP;
-+ return ndo_do_ioctl(dev, ifr, cmd);
- }
-
- /* If command is `set a parameter', or `get the encoding parameters',
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/INFO b/patches/collateral-evolutions/network/0001-netdev_ops/INFO
new file mode 100644
index 00000000..31bea516
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/INFO
@@ -0,0 +1,38 @@
+
+This patch backports the struct net_device_ops changes added on 2.6.29.
+
+If we add the compat.git netdev_attach_ops() implementation
+for newer kernels upstream it means we do not have to use this
+patch at all for older kernels.
+
+mcgrof@tux ~/linux-stable (git::master)$ git describe --contains d314774cf2cd5dfeb39a00d37deee65d4c627927
+v2.6.29-rc1~581^2~677
+
+commit d314774cf2cd5dfeb39a00d37deee65d4c627927
+Author: Stephen Hemminger <shemminger@vyatta.com>
+Date: Wed Nov 19 21:32:24 2008 -0800
+
+ netdev: network device operations infrastructure
+
+ This patch changes the network device internal API to move adminstrative
+ operations out of the network device structure and into a separate structure.
+
+ This patch involves some hackery to maintain compatablity between the
+ new and old model, so all 300+ drivers don't have to be changed at once.
+ For drivers that aren't converted yet, the netdevice_ops virt function list
+ still resides in the net_device structure. For old protocols, the new
+ net_device_ops are copied out to the old net_device pointers.
+
+ After the transistion is completed the nag message can be changed to
+ an WARN_ON, and the compatiablity code can be made configurable.
+
+ Some function pointers aren't moved:
+ * destructor can't be in net_device_ops because
+ it may need to be referenced after the module is unloaded.
+ * neighbor setup is manipulated in a couple of places that need special
+ consideration
+ * hard_start_xmit is in the fast path for transmit.
+
+ Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
new file mode 100644
index 00000000..c52f4639
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+@@ -2470,7 +2470,7 @@
+ SET_NETDEV_DEV(netdev, &pdev->dev);
+ pci_set_drvdata(pdev, netdev);
+
+- netdev->netdev_ops = &atl1c_netdev_ops;
++ netdev_attach_ops(netdev, &atl1c_netdev_ops);
+ netdev->watchdog_timeo = AT_TX_WATCHDOG;
+ atl1c_set_ethtool_ops(netdev);
+
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1e_atl1e_main.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1e_atl1e_main.c
new file mode 100644
index 00000000..4794c228
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atl1e_atl1e_main.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+@@ -2207,7 +2207,7 @@
+ SET_NETDEV_DEV(netdev, &pdev->dev);
+ pci_set_drvdata(pdev, netdev);
+
+- netdev->netdev_ops = &atl1e_netdev_ops;
++ netdev_attach_ops(netdev, &atl1e_netdev_ops);
+
+ netdev->watchdog_timeo = AT_TX_WATCHDOG;
+ atl1e_set_ethtool_ops(netdev);
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl1.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl1.c
new file mode 100644
index 00000000..437b423b
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl1.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/ethernet/atheros/atlx/atl1.c
++++ b/drivers/net/ethernet/atheros/atlx/atl1.c
+@@ -3009,7 +3009,7 @@
+ adapter->mii.phy_id_mask = 0x1f;
+ adapter->mii.reg_num_mask = 0x1f;
+
+- netdev->netdev_ops = &atl1_netdev_ops;
++ netdev_attach_ops(netdev, &atl1_netdev_ops);
+ netdev->watchdog_timeo = 5 * HZ;
+ netif_napi_add(netdev, &adapter->napi, atl1_rings_clean, 64);
+
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl2.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl2.c
new file mode 100644
index 00000000..b5024ea2
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_atheros_atlx_atl2.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/ethernet/atheros/atlx/atl2.c
++++ b/drivers/net/ethernet/atheros/atlx/atl2.c
+@@ -1396,7 +1396,7 @@
+
+ atl2_setup_pcicmd(pdev);
+
+- netdev->netdev_ops = &atl2_netdev_ops;
++ netdev_attach_ops(netdev, &atl2_netdev_ops);
+ atl2_set_ethtool_ops(netdev);
+ netdev->watchdog_timeo = 5 * HZ;
+ strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_broadcom_b44.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_broadcom_b44.c
new file mode 100644
index 00000000..2d44f714
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_ethernet_broadcom_b44.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/ethernet/broadcom/b44.c
++++ b/drivers/net/ethernet/broadcom/b44.c
+@@ -2170,7 +2170,7 @@
+ bp->rx_pending = B44_DEF_RX_RING_PENDING;
+ bp->tx_pending = B44_DEF_TX_RING_PENDING;
+
+- dev->netdev_ops = &b44_netdev_ops;
++ netdev_attach_ops(dev, &b44_netdev_ops);
+ netif_napi_add(dev, &bp->napi, b44_poll, 64);
+ dev->watchdog_timeo = B44_TX_TIMEOUT;
+ dev->irq = sdev->irq;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_rndis_host.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_rndis_host.c
new file mode 100644
index 00000000..3ced6304
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_rndis_host.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/usb/rndis_host.c
++++ b/drivers/net/usb/rndis_host.c
+@@ -358,7 +358,7 @@
+ dev->rx_urb_size &= ~(dev->maxpacket - 1);
+ u.init->max_transfer_size = cpu_to_le32(dev->rx_urb_size);
+
+- net->netdev_ops = &rndis_netdev_ops;
++ netdev_attach_ops(net, &rndis_netdev_ops);
+
+ retval = rndis_command(dev, u.header, CONTROL_BUFFER_SIZE);
+ if (unlikely(retval < 0)) {
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_usbnet.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_usbnet.c
new file mode 100644
index 00000000..f2bf6ecc
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_usb_usbnet.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/usb/usbnet.c
++++ b/drivers/net/usb/usbnet.c
+@@ -1446,7 +1446,7 @@
+ net->features |= NETIF_F_HIGHDMA;
+ #endif
+
+- net->netdev_ops = &usbnet_netdev_ops;
++ netdev_attach_ops(net, &usbnet_netdev_ops);
+ net->watchdog_timeo = TX_TIMEOUT_JIFFIES;
+ net->ethtool_ops = &usbnet_ethtool_ops;
+
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_ath6kl_main.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_ath6kl_main.c
new file mode 100644
index 00000000..d8e008e2
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_ath6kl_main.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath6kl/main.c
++++ b/drivers/net/wireless/ath/ath6kl/main.c
+@@ -1289,7 +1289,7 @@
+
+ void init_netdev(struct net_device *dev)
+ {
+- dev->netdev_ops = &ath6kl_netdev_ops;
++ netdev_attach_ops(dev, &ath6kl_netdev_ops);
+ dev->destructor = free_netdev;
+ dev->watchdog_timeo = ATH6KL_TX_TIMEOUT;
+
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_wil6210_netdev.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_wil6210_netdev.c
new file mode 100644
index 00000000..78347abf
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ath_wil6210_netdev.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/wil6210/netdev.c
++++ b/drivers/net/wireless/ath/wil6210/netdev.c
+@@ -76,7 +76,7 @@
+ goto out_priv;
+ }
+
+- ndev->netdev_ops = &wil_netdev_ops;
++ netdev_attach_ops(ndev, &wil_netdev_ops);
+ ndev->ieee80211_ptr = wdev;
+ SET_NETDEV_DEV(ndev, wiphy_dev(wdev->wiphy));
+ wdev->netdev = ndev;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2100.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2100.c
new file mode 100644
index 00000000..04042212
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2100.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ipw2x00/ipw2100.c
++++ b/drivers/net/wireless/ipw2x00/ipw2100.c
+@@ -6086,7 +6086,7 @@
+ priv->ieee->perfect_rssi = -20;
+ priv->ieee->worst_rssi = -85;
+
+- dev->netdev_ops = &ipw2100_netdev_ops;
++ netdev_attach_ops(dev, &ipw2100_netdev_ops);
+ dev->ethtool_ops = &ipw2100_ethtool_ops;
+ dev->wireless_handlers = &ipw2100_wx_handler_def;
+ priv->wireless_data.libipw = priv->ieee;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2200.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2200.c
new file mode 100644
index 00000000..98d01434
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_ipw2x00_ipw2200.c
@@ -0,0 +1,20 @@
+--- a/drivers/net/wireless/ipw2x00/ipw2200.c
++++ b/drivers/net/wireless/ipw2x00/ipw2200.c
+@@ -11680,7 +11680,7 @@
+ memcpy(priv->prom_net_dev->dev_addr, priv->mac_addr, ETH_ALEN);
+
+ priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP;
+- priv->prom_net_dev->netdev_ops = &ipw_prom_netdev_ops;
++ netdev_attach_ops(priv->prom_net_dev, &ipw_prom_netdev_ops);
+
+ priv->prom_priv->ieee->iw_mode = IW_MODE_MONITOR;
+ SET_NETDEV_DEV(priv->prom_net_dev, &priv->pci_dev->dev);
+@@ -11818,7 +11818,7 @@
+ priv->ieee->perfect_rssi = -20;
+ priv->ieee->worst_rssi = -85;
+
+- net_dev->netdev_ops = &ipw_netdev_ops;
++ netdev_attach_ops(net_dev, &ipw_netdev_ops);
+ priv->wireless_data.spy_data = &priv->ieee->spy_data;
+ net_dev->wireless_data = &priv->wireless_data;
+ net_dev->wireless_handlers = &ipw_wx_handler_def;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_main.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_main.c
new file mode 100644
index 00000000..f77d3036
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_main.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/libertas/main.c
++++ b/drivers/net/wireless/libertas/main.c
+@@ -993,7 +993,7 @@
+ wdev->netdev = dev;
+ priv->dev = dev;
+
+- dev->netdev_ops = &lbs_netdev_ops;
++ netdev_attach_ops(dev, &lbs_netdev_ops);
+ dev->watchdog_timeo = 5 * HZ;
+ dev->ethtool_ops = &lbs_ethtool_ops;
+ dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_mesh.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_mesh.c
new file mode 100644
index 00000000..434f27bd
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_libertas_mesh.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/libertas/mesh.c
++++ b/drivers/net/wireless/libertas/mesh.c
+@@ -1015,7 +1015,7 @@
+ mesh_dev->ieee80211_ptr = mesh_wdev;
+ priv->mesh_dev = mesh_dev;
+
+- mesh_dev->netdev_ops = &mesh_netdev_ops;
++ netdev_attach_ops(mesh_dev, &mesh_netdev_ops);
+ mesh_dev->ethtool_ops = &lbs_ethtool_ops;
+ memcpy(mesh_dev->dev_addr, priv->dev->dev_addr, ETH_ALEN);
+
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mac80211_hwsim.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mac80211_hwsim.c
new file mode 100644
index 00000000..c469227d
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mac80211_hwsim.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/mac80211_hwsim.c
++++ b/drivers/net/wireless/mac80211_hwsim.c
+@@ -1695,7 +1695,7 @@
+
+ static void hwsim_mon_setup(struct net_device *dev)
+ {
+- dev->netdev_ops = &hwsim_netdev_ops;
++ netdev_attach_ops(dev, &hwsim_netdev_ops);
+ dev->destructor = free_netdev;
+ ether_setup(dev);
+ dev->tx_queue_len = 0;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mwifiex_main.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mwifiex_main.c
new file mode 100644
index 00000000..e34289ff
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_mwifiex_main.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/mwifiex/main.c
++++ b/drivers/net/wireless/mwifiex/main.c
+@@ -654,7 +654,7 @@
+ void mwifiex_init_priv_params(struct mwifiex_private *priv,
+ struct net_device *dev)
+ {
+- dev->netdev_ops = &mwifiex_netdev_ops;
++ netdev_attach_ops(dev, &mwifiex_netdev_ops);
+ /* Initialize private structure */
+ priv->current_key_index = 0;
+ priv->media_connected = false;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_orinoco_main.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_orinoco_main.c
new file mode 100644
index 00000000..563ed60b
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_orinoco_main.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/orinoco/main.c
++++ b/drivers/net/wireless/orinoco/main.c
+@@ -2272,9 +2272,9 @@
+ #endif
+ /* Default to standard ops if not set */
+ if (ops)
+- dev->netdev_ops = ops;
++ netdev_attach_ops(dev, ops);
+ else
+- dev->netdev_ops = &orinoco_netdev_ops;
++ netdev_attach_ops(dev, &orinoco_netdev_ops);
+
+ /* we use the default eth_mac_addr for setting the MAC addr */
+
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_rndis_wlan.c b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_rndis_wlan.c
new file mode 100644
index 00000000..2c2d8390
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/drivers_net_wireless_rndis_wlan.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/rndis_wlan.c
++++ b/drivers/net/wireless/rndis_wlan.c
+@@ -3438,7 +3438,7 @@
+ * rndis_host wants to avoid all OID as much as possible
+ * so do promisc/multicast handling in rndis_wlan.
+ */
+- usbdev->net->netdev_ops = &rndis_wlan_netdev_ops;
++ netdev_attach_ops(usbdev->net, &rndis_wlan_netdev_ops);
+
+ tmp = cpu_to_le32(RNDIS_PACKET_TYPE_DIRECTED | RNDIS_PACKET_TYPE_BROADCAST);
+ retval = rndis_set_oid(usbdev,
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/net_bluetooth_bnep_netdev.c b/patches/collateral-evolutions/network/0001-netdev_ops/net_bluetooth_bnep_netdev.c
new file mode 100644
index 00000000..f445877b
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/net_bluetooth_bnep_netdev.c
@@ -0,0 +1,11 @@
+--- a/net/bluetooth/bnep/netdev.c
++++ b/net/bluetooth/bnep/netdev.c
+@@ -223,7 +223,7 @@
+
+ ether_setup(dev);
+ dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+- dev->netdev_ops = &bnep_netdev_ops;
++ netdev_attach_ops(dev, &bnep_netdev_ops);
+
+ dev->watchdog_timeo = HZ * 2;
+ }
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/net_mac80211_iface.c b/patches/collateral-evolutions/network/0001-netdev_ops/net_mac80211_iface.c
new file mode 100644
index 00000000..8f44fe5f
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/net_mac80211_iface.c
@@ -0,0 +1,29 @@
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -1017,7 +1017,7 @@
+ {
+ ether_setup(dev);
+ dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+- dev->netdev_ops = &ieee80211_dataif_ops;
++ netdev_attach_ops(dev, &ieee80211_dataif_ops);
+ dev->destructor = free_netdev;
+ }
+
+@@ -1180,7 +1180,7 @@
+
+ /* only monitor/p2p-device differ */
+ if (sdata->dev) {
+- sdata->dev->netdev_ops = &ieee80211_dataif_ops;
++ netdev_attach_ops(sdata->dev, &ieee80211_dataif_ops);
+ sdata->dev->type = ARPHRD_ETHER;
+ }
+
+@@ -1218,7 +1218,7 @@
+ break;
+ case NL80211_IFTYPE_MONITOR:
+ sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
+- sdata->dev->netdev_ops = &ieee80211_monitorif_ops;
++ netdev_attach_ops(sdata->dev, &ieee80211_monitorif_ops);
+ sdata->u.mntr_flags = MONITOR_FLAG_CONTROL |
+ MONITOR_FLAG_OTHER_BSS;
+ break;
diff --git a/patches/collateral-evolutions/network/0001-netdev_ops/net_wireless_wext-core.c b/patches/collateral-evolutions/network/0001-netdev_ops/net_wireless_wext-core.c
new file mode 100644
index 00000000..df6c792f
--- /dev/null
+++ b/patches/collateral-evolutions/network/0001-netdev_ops/net_wireless_wext-core.c
@@ -0,0 +1,13 @@
+--- a/net/wireless/wext-core.c
++++ b/net/wireless/wext-core.c
+@@ -925,9 +925,7 @@
+ return private(dev, iwr, cmd, info, handler);
+ }
+ /* Old driver API : call driver ioctl handler */
+- if (dev->netdev_ops->ndo_do_ioctl)
+- return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd);
+- return -EOPNOTSUPP;
++ return ndo_do_ioctl(dev, ifr, cmd);
+ }
+
+ /* If command is `set a parameter', or `get the encoding parameters',
diff --git a/patches/collateral-evolutions/network/0002-net-misc.patch b/patches/collateral-evolutions/network/0002-net-misc.patch
deleted file mode 100644
index bd50e0d2..00000000
--- a/patches/collateral-evolutions/network/0002-net-misc.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-These are things that removed in later kernels but no good explanatin
-was provided as to their removal. We should review if this is needed
-and if not remove these hunks.
-
-Pretty sure we can remove the netdev_tx_t hunk change on
-net/bluetooth/bnep/netdev.c, removing that hunk just needs to be
-compile tested against older kernels.
-
---- a/drivers/net/usb/rndis_host.c
-+++ b/drivers/net/usb/rndis_host.c
-@@ -332,6 +332,11 @@ generic_rndis_bind(struct usbnet *dev, s
- u.init->major_version = cpu_to_le32(1);
- u.init->minor_version = cpu_to_le32(0);
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
-+ /* can't we remove this? */
-+ net->change_mtu = NULL;
-+#endif
-+
- /* max transfer (in spec) is 0x4000 at full speed, but for
- * TX we'll stick to one Ethernet packet plus RNDIS framing.
- * For RX we handle drivers that zero-pad to end-of-packet.
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -1018,6 +1018,11 @@ static void ieee80211_if_setup(struct ne
- ether_setup(dev);
- dev->priv_flags &= ~IFF_TX_SKB_SHARING;
- netdev_attach_ops(dev, &ieee80211_dataif_ops);
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
-+ /* Do we need this ? */
-+ /* we will validate the address ourselves in ->open */
-+ dev->validate_addr = NULL;
-+#endif
- dev->destructor = free_netdev;
- }
-
---- a/net/bluetooth/bnep/netdev.c
-+++ b/net/bluetooth/bnep/netdev.c
-@@ -161,8 +161,12 @@ static int bnep_net_proto_filter(struct
- }
- #endif
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static netdev_tx_t bnep_net_xmit(struct sk_buff *skb,
- struct net_device *dev)
-+#else
-+static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev)
-+#endif
- {
- struct bnep_session *s = netdev_priv(dev);
- struct sock *sk = s->sock->sk;
---- a/drivers/net/wireless/libertas/defs.h
-+++ b/drivers/net/wireless/libertas/defs.h
-@@ -16,6 +16,14 @@
- #define DRV_NAME "libertas"
- #endif
-
-+/*
-+ * Really nasty hack to avoid stuffing compat.diff with tons of ifdefs,
-+ * we could add this to a compat header file but too lazy to check ml_priv
-+ * is not used anywhere else
-+ */
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26))
-+#define ml_priv priv
-+#endif
-
- #define LBS_DEB_ENTER 0x00000001
- #define LBS_DEB_LEAVE 0x00000002
diff --git a/patches/collateral-evolutions/network/0002-net-misc/INFO b/patches/collateral-evolutions/network/0002-net-misc/INFO
new file mode 100644
index 00000000..fcfb4160
--- /dev/null
+++ b/patches/collateral-evolutions/network/0002-net-misc/INFO
@@ -0,0 +1,8 @@
+These are things that removed in later kernels but no good explanatin
+was provided as to their removal. We should review if this is needed
+and if not remove these hunks.
+
+Pretty sure we can remove the netdev_tx_t hunk change on
+net/bluetooth/bnep/netdev.c, removing that hunk just needs to be
+compile tested against older kernels.
+
diff --git a/patches/collateral-evolutions/network/0002-net-misc/drivers_net_usb_rndis_host.c b/patches/collateral-evolutions/network/0002-net-misc/drivers_net_usb_rndis_host.c
new file mode 100644
index 00000000..ea802ffe
--- /dev/null
+++ b/patches/collateral-evolutions/network/0002-net-misc/drivers_net_usb_rndis_host.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/usb/rndis_host.c
++++ b/drivers/net/usb/rndis_host.c
+@@ -332,6 +332,11 @@
+ u.init->major_version = cpu_to_le32(1);
+ u.init->minor_version = cpu_to_le32(0);
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
++ /* can't we remove this? */
++ net->change_mtu = NULL;
++#endif
++
+ /* max transfer (in spec) is 0x4000 at full speed, but for
+ * TX we'll stick to one Ethernet packet plus RNDIS framing.
+ * For RX we handle drivers that zero-pad to end-of-packet.
diff --git a/patches/collateral-evolutions/network/0002-net-misc/drivers_net_wireless_libertas_defs.h b/patches/collateral-evolutions/network/0002-net-misc/drivers_net_wireless_libertas_defs.h
new file mode 100644
index 00000000..5039684e
--- /dev/null
+++ b/patches/collateral-evolutions/network/0002-net-misc/drivers_net_wireless_libertas_defs.h
@@ -0,0 +1,17 @@
+--- a/drivers/net/wireless/libertas/defs.h
++++ b/drivers/net/wireless/libertas/defs.h
+@@ -16,6 +16,14 @@
+ #define DRV_NAME "libertas"
+ #endif
+
++/*
++ * Really nasty hack to avoid stuffing compat.diff with tons of ifdefs,
++ * we could add this to a compat header file but too lazy to check ml_priv
++ * is not used anywhere else
++ */
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26))
++#define ml_priv priv
++#endif
+
+ #define LBS_DEB_ENTER 0x00000001
+ #define LBS_DEB_LEAVE 0x00000002
diff --git a/patches/collateral-evolutions/network/0002-net-misc/net_bluetooth_bnep_netdev.c b/patches/collateral-evolutions/network/0002-net-misc/net_bluetooth_bnep_netdev.c
new file mode 100644
index 00000000..45deda6c
--- /dev/null
+++ b/patches/collateral-evolutions/network/0002-net-misc/net_bluetooth_bnep_netdev.c
@@ -0,0 +1,15 @@
+--- a/net/bluetooth/bnep/netdev.c
++++ b/net/bluetooth/bnep/netdev.c
+@@ -161,8 +161,12 @@
+ }
+ #endif
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static netdev_tx_t bnep_net_xmit(struct sk_buff *skb,
+ struct net_device *dev)
++#else
++static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev)
++#endif
+ {
+ struct bnep_session *s = netdev_priv(dev);
+ struct sock *sk = s->sock->sk;
diff --git a/patches/collateral-evolutions/network/0002-net-misc/net_mac80211_iface.c b/patches/collateral-evolutions/network/0002-net-misc/net_mac80211_iface.c
new file mode 100644
index 00000000..2033364d
--- /dev/null
+++ b/patches/collateral-evolutions/network/0002-net-misc/net_mac80211_iface.c
@@ -0,0 +1,14 @@
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -1018,6 +1018,11 @@
+ ether_setup(dev);
+ dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+ netdev_attach_ops(dev, &ieee80211_dataif_ops);
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
++ /* Do we need this ? */
++ /* we will validate the address ourselves in ->open */
++ dev->validate_addr = NULL;
++#endif
+ dev->destructor = free_netdev;
+ }
+
diff --git a/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom.patch b/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom.patch
deleted file mode 100644
index a38ceaf6..00000000
--- a/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-This is an optimization introduced on newer kernels, just ignore for
-older kernels on mac80211. For others the netdev->hard_header_len
-could be used.
-
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -1518,6 +1518,7 @@ int ieee80211_if_add(struct ieee80211_lo
- return -ENOMEM;
- dev_net_set(ndev, wiphy_net(local->hw.wiphy));
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))
- ndev->needed_headroom = local->tx_headroom +
- 4*6 /* four MAC addresses */
- + 2 + 2 + 2 + 2 /* ctl, dur, seq, qos */
-@@ -1526,6 +1527,7 @@ int ieee80211_if_add(struct ieee80211_lo
- - ETH_HLEN /* ethernet hard_header_len */
- + IEEE80211_ENCRYPT_HEADROOM;
- ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
-+#endif
-
- ret = dev_alloc_name(ndev, ndev->name);
- if (ret < 0) {
---- a/drivers/net/wireless/orinoco/main.c
-+++ b/drivers/net/wireless/orinoco/main.c
-@@ -2279,7 +2279,11 @@ int orinoco_if_add(struct orinoco_privat
- /* we use the default eth_mac_addr for setting the MAC addr */
-
- /* Reserve space in skb for the SNAP header */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))
- dev->needed_headroom = ENCAPS_OVERHEAD;
-+#else
-+ dev->hard_header_len += ENCAPS_OVERHEAD;
-+#endif
-
- netif_carrier_off(dev);
-
diff --git a/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/INFO b/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/INFO
new file mode 100644
index 00000000..be5ad804
--- /dev/null
+++ b/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/INFO
@@ -0,0 +1,4 @@
+This is an optimization introduced on newer kernels, just ignore for
+older kernels on mac80211. For others the netdev->hard_header_len
+could be used.
+
diff --git a/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/drivers_net_wireless_orinoco_main.c b/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/drivers_net_wireless_orinoco_main.c
new file mode 100644
index 00000000..4adf2764
--- /dev/null
+++ b/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/drivers_net_wireless_orinoco_main.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/orinoco/main.c
++++ b/drivers/net/wireless/orinoco/main.c
+@@ -2279,7 +2279,11 @@
+ /* we use the default eth_mac_addr for setting the MAC addr */
+
+ /* Reserve space in skb for the SNAP header */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))
+ dev->needed_headroom = ENCAPS_OVERHEAD;
++#else
++ dev->hard_header_len += ENCAPS_OVERHEAD;
++#endif
+
+ netif_carrier_off(dev);
+
diff --git a/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/net_mac80211_iface.c b/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/net_mac80211_iface.c
new file mode 100644
index 00000000..cc9aae45
--- /dev/null
+++ b/patches/collateral-evolutions/network/0003-netdev-needed_headroom_tailroom/net_mac80211_iface.c
@@ -0,0 +1,18 @@
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -1518,6 +1518,7 @@
+ return -ENOMEM;
+ dev_net_set(ndev, wiphy_net(local->hw.wiphy));
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))
+ ndev->needed_headroom = local->tx_headroom +
+ 4*6 /* four MAC addresses */
+ + 2 + 2 + 2 + 2 /* ctl, dur, seq, qos */
+@@ -1526,6 +1527,7 @@
+ - ETH_HLEN /* ethernet hard_header_len */
+ + IEEE80211_ENCRYPT_HEADROOM;
+ ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
++#endif
+
+ ret = dev_alloc_name(ndev, ndev->name);
+ if (ret < 0) {
diff --git a/patches/collateral-evolutions/network/0004-wext-namespace/INFO b/patches/collateral-evolutions/network/0004-wext-namespace/INFO
new file mode 100644
index 00000000..66bde409
--- /dev/null
+++ b/patches/collateral-evolutions/network/0004-wext-namespace/INFO
@@ -0,0 +1,4 @@
+
+This patch backports the namespace changes added
+through net/wireless/wext.c.
+
diff --git a/patches/collateral-evolutions/network/0004-wext-namespace.patch b/patches/collateral-evolutions/network/0004-wext-namespace/net_wireless_wext-core.c
index 606001b6..2d257c69 100644
--- a/patches/collateral-evolutions/network/0004-wext-namespace.patch
+++ b/patches/collateral-evolutions/network/0004-wext-namespace/net_wireless_wext-core.c
@@ -1,10 +1,6 @@
-
-This patch backports the namespace changes added
-through net/wireless/wext.c.
-
--- a/net/wireless/wext-core.c
+++ b/net/wireless/wext-core.c
-@@ -342,6 +342,7 @@ static const int compat_event_type_size[
+@@ -342,6 +342,7 @@
/* IW event code */
@@ -12,7 +8,7 @@ through net/wireless/wext.c.
static int __net_init wext_pernet_init(struct net *net)
{
skb_queue_head_init(&net->wext_nlevents);
-@@ -384,6 +385,29 @@ static void wireless_nlevent_process(str
+@@ -384,6 +385,29 @@
static DECLARE_WORK(wireless_nlevent_work, wireless_nlevent_process);
@@ -42,7 +38,7 @@ through net/wireless/wext.c.
static struct nlmsghdr *rtnetlink_ifinfo_prep(struct net_device *dev,
struct sk_buff *skb)
{
-@@ -597,8 +621,13 @@ void wireless_send_event(struct net_devi
+@@ -597,8 +621,13 @@
skb_shinfo(skb)->frag_list = compskb;
#endif
diff --git a/patches/collateral-evolutions/network/0005-netlink-portid/INFO b/patches/collateral-evolutions/network/0005-netlink-portid/INFO
new file mode 100644
index 00000000..e49ac3b6
--- /dev/null
+++ b/patches/collateral-evolutions/network/0005-netlink-portid/INFO
@@ -0,0 +1,42 @@
+The patch:
+
+commit 15e473046cb6e5d18a4d0057e61d76315230382b
+Author: Eric W. Biederman <ebiederm@xmission.com>
+Date: Fri Sep 7 20:12:54 2012 +0000
+
+ netlink: Rename pid to portid to avoid confusion
+
+ It is a frequent mistake to confuse the netlink port identifier with a
+ process identifier. Try to reduce this confusion by renaming fields
+ that hold port identifiers portid instead of pid.
+
+ I have carefully avoided changing the structures exported to
+ userspace to avoid changing the userspace API.
+
+ I have successfully built an allyesconfig kernel with this change.
+
+ Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
+ Acked-by: Stephen Hemminger <shemminger@vyatta.com>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
+Changed the struct members:
+
+struct netlink_notify->pid to
+struct netlink_notify->portid
+
+struct genl_info->snd_pid to
+struct genl_info->snd_portid
+
+To help backport this and not have to #ifdef around it against
+kernel versions compat has introduced two helpers for us to
+simply do the backport with two macro helpers:
+
+genl_info_snd_portid()
+netlink_notify_portid()
+
+This takes care of the work for us requiring only one
+single line change. If we get another patch thrown into
+this file then I suspect we can extract SMPL out of it
+and use it to backport further collateral evolutions like
+this one should other drivers / subsystem need this change.
+
diff --git a/patches/collateral-evolutions/network/0005-netlink-portid/drivers_net_wireless_mac80211_hwsim.c b/patches/collateral-evolutions/network/0005-netlink-portid/drivers_net_wireless_mac80211_hwsim.c
new file mode 100644
index 00000000..1f8d82b8
--- /dev/null
+++ b/patches/collateral-evolutions/network/0005-netlink-portid/drivers_net_wireless_mac80211_hwsim.c
@@ -0,0 +1,24 @@
+--- a/drivers/net/wireless/mac80211_hwsim.c
++++ b/drivers/net/wireless/mac80211_hwsim.c
+@@ -2019,10 +2019,10 @@
+ if (info == NULL)
+ goto out;
+
+- wmediumd_portid = info->snd_portid;
++ wmediumd_portid = genl_info_snd_portid(info);
+
+ printk(KERN_DEBUG "mac80211_hwsim: received a REGISTER, "
+- "switching to wmediumd mode with pid %d\n", info->snd_portid);
++ "switching to wmediumd mode with pid %d\n", genl_info_snd_portid(info));
+
+ return 0;
+ out:
+@@ -2059,7 +2059,7 @@
+ if (state != NETLINK_URELEASE)
+ return NOTIFY_DONE;
+
+- if (notify->portid == wmediumd_portid) {
++ if (netlink_notify_portid(notify) == wmediumd_portid) {
+ printk(KERN_INFO "mac80211_hwsim: wmediumd released netlink"
+ " socket, switching to perfect channel medium\n");
+ wmediumd_portid = 0;
diff --git a/patches/collateral-evolutions/network/0005-netlink-portid.patch b/patches/collateral-evolutions/network/0005-netlink-portid/net_wireless_nl80211.c
index 56dd3efc..3e39a4df 100644
--- a/patches/collateral-evolutions/network/0005-netlink-portid.patch
+++ b/patches/collateral-evolutions/network/0005-netlink-portid/net_wireless_nl80211.c
@@ -1,72 +1,6 @@
-The patch:
-
-commit 15e473046cb6e5d18a4d0057e61d76315230382b
-Author: Eric W. Biederman <ebiederm@xmission.com>
-Date: Fri Sep 7 20:12:54 2012 +0000
-
- netlink: Rename pid to portid to avoid confusion
-
- It is a frequent mistake to confuse the netlink port identifier with a
- process identifier. Try to reduce this confusion by renaming fields
- that hold port identifiers portid instead of pid.
-
- I have carefully avoided changing the structures exported to
- userspace to avoid changing the userspace API.
-
- I have successfully built an allyesconfig kernel with this change.
-
- Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
- Acked-by: Stephen Hemminger <shemminger@vyatta.com>
- Signed-off-by: David S. Miller <davem@davemloft.net>
-
-Changed the struct members:
-
-struct netlink_notify->pid to
-struct netlink_notify->portid
-
-struct genl_info->snd_pid to
-struct genl_info->snd_portid
-
-To help backport this and not have to #ifdef around it against
-kernel versions compat has introduced two helpers for us to
-simply do the backport with two macro helpers:
-
-genl_info_snd_portid()
-netlink_notify_portid()
-
-This takes care of the work for us requiring only one
-single line change. If we get another patch thrown into
-this file then I suspect we can extract SMPL out of it
-and use it to backport further collateral evolutions like
-this one should other drivers / subsystem need this change.
-
---- a/drivers/net/wireless/mac80211_hwsim.c
-+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -2019,10 +2019,10 @@ static int hwsim_register_received_nl(st
- if (info == NULL)
- goto out;
-
-- wmediumd_portid = info->snd_portid;
-+ wmediumd_portid = genl_info_snd_portid(info);
-
- printk(KERN_DEBUG "mac80211_hwsim: received a REGISTER, "
-- "switching to wmediumd mode with pid %d\n", info->snd_portid);
-+ "switching to wmediumd mode with pid %d\n", genl_info_snd_portid(info));
-
- return 0;
- out:
-@@ -2059,7 +2059,7 @@ static int mac80211_hwsim_netlink_notify
- if (state != NETLINK_URELEASE)
- return NOTIFY_DONE;
-
-- if (notify->portid == wmediumd_portid) {
-+ if (netlink_notify_portid(notify) == wmediumd_portid) {
- printk(KERN_INFO "mac80211_hwsim: wmediumd released netlink"
- " socket, switching to perfect channel medium\n");
- wmediumd_portid = 0;
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -1593,7 +1593,7 @@ static int nl80211_dump_wiphy(struct sk_
+@@ -1593,7 +1593,7 @@
/* attempt to fit multiple wiphy data chunks into the skb */
do {
ret = nl80211_send_wiphy(dev, skb,
@@ -75,7 +9,7 @@ this one should other drivers / subsystem need this change.
cb->nlh->nlmsg_seq,
NLM_F_MULTI,
split, &cb->args[1],
-@@ -1642,7 +1642,7 @@ static int nl80211_get_wiphy(struct sk_b
+@@ -1642,7 +1642,7 @@
if (!msg)
return -ENOMEM;
@@ -84,7 +18,7 @@ this one should other drivers / subsystem need this change.
false, NULL, NULL, NULL) < 0) {
nlmsg_free(msg);
return -ENOBUFS;
-@@ -2222,7 +2222,7 @@ static int nl80211_dump_interface(struct
+@@ -2222,7 +2222,7 @@
if_idx++;
continue;
}
@@ -93,7 +27,7 @@ this one should other drivers / subsystem need this change.
cb->nlh->nlmsg_seq, NLM_F_MULTI,
rdev, wdev) < 0) {
mutex_unlock(&rdev->devlist_mtx);
-@@ -2253,7 +2253,7 @@ static int nl80211_get_interface(struct
+@@ -2253,7 +2253,7 @@
if (!msg)
return -ENOMEM;
@@ -102,7 +36,7 @@ this one should other drivers / subsystem need this change.
dev, wdev) < 0) {
nlmsg_free(msg);
return -ENOBUFS;
-@@ -2478,7 +2478,7 @@ static int nl80211_new_interface(struct
+@@ -2478,7 +2478,7 @@
break;
}
@@ -111,7 +45,7 @@ this one should other drivers / subsystem need this change.
rdev, wdev) < 0) {
nlmsg_free(msg);
return -ENOBUFS;
-@@ -2613,7 +2613,7 @@ static int nl80211_get_key(struct sk_buf
+@@ -2613,7 +2613,7 @@
if (!msg)
return -ENOMEM;
@@ -120,7 +54,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_NEW_KEY);
if (IS_ERR(hdr))
return PTR_ERR(hdr);
-@@ -3549,7 +3549,7 @@ static int nl80211_dump_station(struct s
+@@ -3549,7 +3549,7 @@
goto out_err;
if (nl80211_send_station(skb,
@@ -129,7 +63,7 @@ this one should other drivers / subsystem need this change.
cb->nlh->nlmsg_seq, NLM_F_MULTI,
dev, netdev, mac_addr,
&sinfo) < 0)
-@@ -3595,7 +3595,7 @@ static int nl80211_get_station(struct sk
+@@ -3595,7 +3595,7 @@
if (!msg)
return -ENOMEM;
@@ -138,7 +72,7 @@ this one should other drivers / subsystem need this change.
rdev, dev, mac_addr, &sinfo) < 0) {
nlmsg_free(msg);
return -ENOBUFS;
-@@ -4195,7 +4195,7 @@ static int nl80211_dump_mpath(struct sk_
+@@ -4195,7 +4195,7 @@
if (err)
goto out_err;
@@ -147,7 +81,7 @@ this one should other drivers / subsystem need this change.
cb->nlh->nlmsg_seq, NLM_F_MULTI,
netdev, dst, next_hop,
&pinfo) < 0)
-@@ -4244,7 +4244,7 @@ static int nl80211_get_mpath(struct sk_b
+@@ -4244,7 +4244,7 @@
if (!msg)
return -ENOMEM;
@@ -156,7 +90,7 @@ this one should other drivers / subsystem need this change.
dev, dst, next_hop, &pinfo) < 0) {
nlmsg_free(msg);
return -ENOBUFS;
-@@ -4508,7 +4508,7 @@ static int nl80211_get_mesh_config(struc
+@@ -4508,7 +4508,7 @@
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
if (!msg)
return -ENOMEM;
@@ -165,7 +99,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_GET_MESH_CONFIG);
if (!hdr)
goto out;
-@@ -4858,7 +4858,7 @@ static int nl80211_get_reg(struct sk_buf
+@@ -4858,7 +4858,7 @@
goto out;
}
@@ -174,7 +108,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_GET_REG);
if (!hdr)
goto put_failure;
-@@ -5558,7 +5558,7 @@ static int nl80211_send_bss(struct sk_bu
+@@ -5558,7 +5558,7 @@
ASSERT_WDEV_LOCK(wdev);
@@ -183,7 +117,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_NEW_SCAN_RESULTS);
if (!hdr)
return -1;
-@@ -5789,7 +5789,7 @@ static int nl80211_dump_survey(struct sk
+@@ -5789,7 +5789,7 @@
}
if (nl80211_send_survey(skb,
@@ -192,7 +126,7 @@ this one should other drivers / subsystem need this change.
cb->nlh->nlmsg_seq, NLM_F_MULTI,
netdev,
&survey) < 0)
-@@ -6448,7 +6448,7 @@ static int nl80211_testmode_dump(struct
+@@ -6448,7 +6448,7 @@
}
while (1) {
@@ -201,7 +135,7 @@ this one should other drivers / subsystem need this change.
cb->nlh->nlmsg_seq, NLM_F_MULTI,
NL80211_CMD_TESTMODE);
struct nlattr *tmdata;
-@@ -6527,7 +6527,7 @@ struct sk_buff *cfg80211_testmode_alloc_
+@@ -6527,7 +6527,7 @@
return NULL;
return __cfg80211_testmode_alloc_skb(rdev, approxlen,
@@ -210,7 +144,7 @@ this one should other drivers / subsystem need this change.
rdev->testmode_info->snd_seq,
GFP_KERNEL);
}
-@@ -6887,7 +6887,7 @@ static int nl80211_remain_on_channel(str
+@@ -6887,7 +6887,7 @@
if (!msg)
return -ENOMEM;
@@ -219,7 +153,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_REMAIN_ON_CHANNEL);
if (IS_ERR(hdr)) {
-@@ -7106,7 +7106,7 @@ static int nl80211_register_mgmt(struct
+@@ -7106,7 +7106,7 @@
if (!rdev->ops->mgmt_tx)
return -EOPNOTSUPP;
@@ -228,7 +162,7 @@ this one should other drivers / subsystem need this change.
nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]),
nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]));
}
-@@ -7176,7 +7176,7 @@ static int nl80211_tx_mgmt(struct sk_buf
+@@ -7176,7 +7176,7 @@
if (!msg)
return -ENOMEM;
@@ -237,7 +171,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_FRAME);
if (IS_ERR(hdr)) {
-@@ -7291,7 +7291,7 @@ static int nl80211_get_power_save(struct
+@@ -7291,7 +7291,7 @@
if (!msg)
return -ENOMEM;
@@ -246,7 +180,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_GET_POWER_SAVE);
if (!hdr) {
err = -ENOBUFS;
-@@ -7583,7 +7583,7 @@ static int nl80211_get_wowlan(struct sk_
+@@ -7583,7 +7583,7 @@
if (!msg)
return -ENOMEM;
@@ -255,7 +189,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_GET_WOWLAN);
if (!hdr)
goto nla_put_failure;
-@@ -8007,7 +8007,7 @@ static int nl80211_register_unexpected_f
+@@ -8007,7 +8007,7 @@
if (wdev->ap_unexpected_nlportid)
return -EBUSY;
@@ -264,7 +198,7 @@ this one should other drivers / subsystem need this change.
return 0;
}
-@@ -8037,7 +8037,7 @@ static int nl80211_probe_client(struct s
+@@ -8037,7 +8037,7 @@
if (!msg)
return -ENOMEM;
@@ -273,7 +207,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_PROBE_CLIENT);
if (IS_ERR(hdr)) {
-@@ -8081,13 +8081,13 @@ static int nl80211_register_beacons(stru
+@@ -8081,13 +8081,13 @@
/* First, check if already registered. */
spin_lock_bh(&rdev->beacon_registrations_lock);
list_for_each_entry(reg, &rdev->beacon_registrations, list) {
@@ -289,7 +223,7 @@ this one should other drivers / subsystem need this change.
list_add(&nreg->list, &rdev->beacon_registrations);
spin_unlock_bh(&rdev->beacon_registrations_lock);
-@@ -8160,7 +8160,7 @@ static int nl80211_get_protocol_features
+@@ -8160,7 +8160,7 @@
if (!msg)
return -ENOMEM;
@@ -298,7 +232,7 @@ this one should other drivers / subsystem need this change.
NL80211_CMD_GET_PROTOCOL_FEATURES);
if (!hdr)
goto nla_put_failure;
-@@ -10565,12 +10565,12 @@ static int nl80211_netlink_notify(struct
+@@ -10565,12 +10565,12 @@
list_for_each_entry_rcu(rdev, &cfg80211_rdev_list, list) {
list_for_each_entry_rcu(wdev, &rdev->wdev_list, list)
diff --git a/patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels.patch b/patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels/INFO
index ff7abf75..04893226 100644
--- a/patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels.patch
+++ b/patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels/INFO
@@ -26,21 +26,3 @@ Date: Fri Mar 1 14:03:49 2013 +0100
Also increase the size for the get_wiphy command.
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -1600,6 +1600,7 @@ static int nl80211_dump_wiphy(struct sk_
- &cb->args[2],
- &cb->args[3]);
- if (ret < 0) {
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
- /*
- * If sending the wiphy data didn't fit (ENOBUFS
- * or EMSGSIZE returned), this SKB is still
-@@ -1620,6 +1621,7 @@ static int nl80211_dump_wiphy(struct sk_
- mutex_unlock(&cfg80211_mutex);
- return 1;
- }
-+#endif
- idx--;
- break;
- }
diff --git a/patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels/net_wireless_nl80211.c b/patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels/net_wireless_nl80211.c
new file mode 100644
index 00000000..6dc8c330
--- /dev/null
+++ b/patches/collateral-evolutions/network/0006-disable-dump-adjust-on-old-kernels/net_wireless_nl80211.c
@@ -0,0 +1,18 @@
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -1600,6 +1600,7 @@
+ &cb->args[2],
+ &cb->args[3]);
+ if (ret < 0) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
+ /*
+ * If sending the wiphy data didn't fit (ENOBUFS
+ * or EMSGSIZE returned), this SKB is still
+@@ -1620,6 +1621,7 @@
+ mutex_unlock(&cfg80211_mutex);
+ return 1;
+ }
++#endif
+ idx--;
+ break;
+ }
diff --git a/patches/collateral-evolutions/network/02-ksize/INFO b/patches/collateral-evolutions/network/02-ksize/INFO
new file mode 100644
index 00000000..1bb12887
--- /dev/null
+++ b/patches/collateral-evolutions/network/02-ksize/INFO
@@ -0,0 +1,12 @@
+ksize() was added as of 2.6.29, it gives you the actual
+size of the allocated data. Since we have no support for
+this we simply do not optimize for it and deal with
+large alloocations for the IEs.
+
+We technically could backport this as
+
+define ksize(bleh) SOME_LARGE_NUMBER
+
+but doing it this way emphasis careful review
+of the situation.
+
diff --git a/patches/collateral-evolutions/network/02-ksize.patch b/patches/collateral-evolutions/network/02-ksize/drivers_net_wireless_orinoco_wext.c
index 934e2fae..1bf1ac5b 100644
--- a/patches/collateral-evolutions/network/02-ksize.patch
+++ b/patches/collateral-evolutions/network/02-ksize/drivers_net_wireless_orinoco_wext.c
@@ -1,18 +1,6 @@
-ksize() was added as of 2.6.29, it gives you the actual
-size of the allocated data. Since we have no support for
-this we simply do not optimize for it and deal with
-large alloocations for the IEs.
-
-We technically could backport this as
-
-define ksize(bleh) SOME_LARGE_NUMBER
-
-but doing it this way emphasis careful review
-of the situation.
-
--- a/drivers/net/wireless/orinoco/wext.c
+++ b/drivers/net/wireless/orinoco/wext.c
-@@ -31,8 +31,22 @@ static int orinoco_set_key(struct orinoc
+@@ -31,8 +31,22 @@
enum orinoco_alg alg, const u8 *key, int key_len,
const u8 *seq, int seq_len)
{
diff --git a/patches/collateral-evolutions/network/03-rfkill.patch b/patches/collateral-evolutions/network/03-rfkill.patch
deleted file mode 100644
index 5797d9f3..00000000
--- a/patches/collateral-evolutions/network/03-rfkill.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-rfkill was re-implemented on 2.6.31. We port it to
-older kernels with a simple hack, just rename the
-module as a new one rfkill_backport, and every
-exported symbol gets redefined with a _backport
-postfix through compat-2.6.31.h. The changes below
-are the ones we could not do through compat-2.6.31.h
-
-Do older kernels have /dev/rfkill ? I not then we can
-just keep /dev/rfkill and not /dev/rfkill_backport.
-
-Note that 2.6.31 added netdevice notifier upon interface
-dev_open() which on cfg80211 will check if checks to see
-if rfkill is enabled (or if the mode of operation is not
-supported) on the cfg80211_netdev_notifier_call() and if
-so deny bringing the interface up. This was added via
-commit:
-
-3b8bcfd5d31ea0fec58681d035544ace707d2536
-
-Since older kernels will not have the notifier call
-on dev_open() if we *really want* to port this we could have
-mac80211's subif_open() call :
-
- ret = call_netdevice_notifiers(NETDEV_PRE_UP, dev);
- ret = notifier_to_errno(ret);
- if (ret)
- return ret;
-
-This would do the policing from within mac80211.
-
---- a/net/rfkill/Makefile
-+++ b/net/rfkill/Makefile
-@@ -2,8 +2,8 @@
- # Makefile for the RF switch subsystem.
- #
-
--rfkill-y += core.o
--rfkill-$(CONFIG_RFKILL_INPUT) += input.o
--obj-$(CONFIG_RFKILL) += rfkill.o
-+rfkill_backport-y += core.o
-+rfkill_backport-$(CONFIG_RFKILL_BACKPORT_INPUT) += input.o
-+obj-$(CONFIG_RFKILL_BACKPORT) += rfkill_backport.o
- obj-$(CONFIG_RFKILL_REGULATOR) += rfkill-regulator.o
- obj-$(CONFIG_RFKILL_GPIO) += rfkill-gpio.o
---- a/net/rfkill/input.c
-+++ b/net/rfkill/input.c
-@@ -230,7 +230,7 @@ static int rfkill_connect(struct input_h
-
- handle->dev = dev;
- handle->handler = handler;
-- handle->name = "rfkill";
-+ handle->name = "rfkill_backport";
-
- /* causes rfkill_start() to be called */
- error = input_register_handle(handle);
---- a/net/rfkill/core.c
-+++ b/net/rfkill/core.c
-@@ -826,7 +826,7 @@ static int rfkill_resume(struct device *
- }
-
- static struct class rfkill_class = {
-- .name = "rfkill",
-+ .name = "rfkill_backport",
- .dev_release = rfkill_release,
- .dev_attrs = rfkill_dev_attrs,
- .dev_uevent = rfkill_dev_uevent,
diff --git a/patches/collateral-evolutions/network/03-rfkill/INFO b/patches/collateral-evolutions/network/03-rfkill/INFO
new file mode 100644
index 00000000..9aff38f9
--- /dev/null
+++ b/patches/collateral-evolutions/network/03-rfkill/INFO
@@ -0,0 +1,30 @@
+rfkill was re-implemented on 2.6.31. We port it to
+older kernels with a simple hack, just rename the
+module as a new one rfkill_backport, and every
+exported symbol gets redefined with a _backport
+postfix through compat-2.6.31.h. The changes below
+are the ones we could not do through compat-2.6.31.h
+
+Do older kernels have /dev/rfkill ? I not then we can
+just keep /dev/rfkill and not /dev/rfkill_backport.
+
+Note that 2.6.31 added netdevice notifier upon interface
+dev_open() which on cfg80211 will check if checks to see
+if rfkill is enabled (or if the mode of operation is not
+supported) on the cfg80211_netdev_notifier_call() and if
+so deny bringing the interface up. This was added via
+commit:
+
+3b8bcfd5d31ea0fec58681d035544ace707d2536
+
+Since older kernels will not have the notifier call
+on dev_open() if we *really want* to port this we could have
+mac80211's subif_open() call :
+
+ ret = call_netdevice_notifiers(NETDEV_PRE_UP, dev);
+ ret = notifier_to_errno(ret);
+ if (ret)
+ return ret;
+
+This would do the policing from within mac80211.
+
diff --git a/patches/collateral-evolutions/network/03-rfkill/net_rfkill_Makefile b/patches/collateral-evolutions/network/03-rfkill/net_rfkill_Makefile
new file mode 100644
index 00000000..29d260e3
--- /dev/null
+++ b/patches/collateral-evolutions/network/03-rfkill/net_rfkill_Makefile
@@ -0,0 +1,14 @@
+--- a/net/rfkill/Makefile
++++ b/net/rfkill/Makefile
+@@ -2,8 +2,8 @@
+ # Makefile for the RF switch subsystem.
+ #
+
+-rfkill-y += core.o
+-rfkill-$(CONFIG_RFKILL_INPUT) += input.o
+-obj-$(CONFIG_RFKILL) += rfkill.o
++rfkill_backport-y += core.o
++rfkill_backport-$(CONFIG_RFKILL_BACKPORT_INPUT) += input.o
++obj-$(CONFIG_RFKILL_BACKPORT) += rfkill_backport.o
+ obj-$(CONFIG_RFKILL_REGULATOR) += rfkill-regulator.o
+ obj-$(CONFIG_RFKILL_GPIO) += rfkill-gpio.o
diff --git a/patches/collateral-evolutions/network/03-rfkill/net_rfkill_core.c b/patches/collateral-evolutions/network/03-rfkill/net_rfkill_core.c
new file mode 100644
index 00000000..689c6c9a
--- /dev/null
+++ b/patches/collateral-evolutions/network/03-rfkill/net_rfkill_core.c
@@ -0,0 +1,11 @@
+--- a/net/rfkill/core.c
++++ b/net/rfkill/core.c
+@@ -826,7 +826,7 @@
+ }
+
+ static struct class rfkill_class = {
+- .name = "rfkill",
++ .name = "rfkill_backport",
+ .dev_release = rfkill_release,
+ .dev_attrs = rfkill_dev_attrs,
+ .dev_uevent = rfkill_dev_uevent,
diff --git a/patches/collateral-evolutions/network/03-rfkill/net_rfkill_input.c b/patches/collateral-evolutions/network/03-rfkill/net_rfkill_input.c
new file mode 100644
index 00000000..0304be5b
--- /dev/null
+++ b/patches/collateral-evolutions/network/03-rfkill/net_rfkill_input.c
@@ -0,0 +1,11 @@
+--- a/net/rfkill/input.c
++++ b/net/rfkill/input.c
+@@ -230,7 +230,7 @@
+
+ handle->dev = dev;
+ handle->handler = handler;
+- handle->name = "rfkill";
++ handle->name = "rfkill_backport";
+
+ /* causes rfkill_start() to be called */
+ error = input_register_handle(handle);
diff --git a/patches/collateral-evolutions/network/04-netns.patch b/patches/collateral-evolutions/network/04-netns.patch
deleted file mode 100644
index 51345b6e..00000000
--- a/patches/collateral-evolutions/network/04-netns.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-The only other namespace change. Note that pach 01-netdev.patch
-also has some other namespace changes there, look at that file
-for the other changes. It'd be nice to figure out a way to
-bring thise here cleanly and seprately but they touch the same
-files...
-
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -6740,7 +6740,9 @@ static int nl80211_wiphy_netns(struct sk
- if (!net_eq(wiphy_net(&rdev->wiphy), net))
- err = cfg80211_switch_netns(rdev, net);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- put_net(net);
-+#endif
- return err;
- }
-
---- a/net/wireless/core.c
-+++ b/net/wireless/core.c
-@@ -160,6 +160,7 @@ int cfg80211_dev_rename(struct cfg80211_
- return 0;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- int cfg80211_switch_netns(struct cfg80211_registered_device *rdev,
- struct net *net)
- {
-@@ -204,6 +205,7 @@ int cfg80211_switch_netns(struct cfg8021
-
- return 0;
- }
-+#endif
-
- static void cfg80211_rfkill_poll(struct rfkill *rfkill, void *data)
- {
-@@ -372,7 +374,9 @@ struct wiphy *wiphy_new(const struct cfg
- rdev->wiphy.flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT;
- #endif
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- wiphy_net_set(&rdev->wiphy, &init_net);
-+#endif
-
- rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
- rdev->rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
-@@ -919,8 +923,10 @@ static int cfg80211_netdev_notifier_call
- wdev->identifier = ++rdev->wdev_id;
- list_add_rcu(&wdev->list, &rdev->wdev_list);
- rdev->devlist_generation++;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- /* can only change netns with wiphy */
- dev->features |= NETIF_F_NETNS_LOCAL;
-+#endif
-
- if (sysfs_create_link(&dev->dev.kobj, &rdev->wiphy.dev.kobj,
- "phy80211")) {
-@@ -1081,6 +1087,7 @@ static struct notifier_block cfg80211_ne
- .notifier_call = cfg80211_netdev_notifier_call,
- };
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- static void __net_exit cfg80211_pernet_exit(struct net *net)
- {
- struct cfg80211_registered_device *rdev;
-@@ -1098,14 +1105,17 @@ static void __net_exit cfg80211_pernet_e
- static struct pernet_operations cfg80211_pernet_ops = {
- .exit = cfg80211_pernet_exit,
- };
-+#endif
-
- static int __init cfg80211_init(void)
- {
- int err;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- err = register_pernet_device(&cfg80211_pernet_ops);
- if (err)
- goto out_fail_pernet;
-+#endif
-
- err = wiphy_sysfs_init();
- if (err)
-@@ -1142,8 +1152,10 @@ out_fail_nl80211:
- out_fail_notifier:
- wiphy_sysfs_exit();
- out_fail_sysfs:
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- unregister_pernet_device(&cfg80211_pernet_ops);
- out_fail_pernet:
-+#endif
- return err;
- }
- subsys_initcall(cfg80211_init);
-@@ -1155,7 +1167,9 @@ static void __exit cfg80211_exit(void)
- unregister_netdevice_notifier(&cfg80211_netdev_notifier);
- wiphy_sysfs_exit();
- regulatory_exit();
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- unregister_pernet_device(&cfg80211_pernet_ops);
-+#endif
- destroy_workqueue(cfg80211_wq);
- }
- module_exit(cfg80211_exit);
---- a/net/wireless/wext-core.c
-+++ b/net/wireless/wext-core.c
-@@ -367,6 +367,7 @@ static int __init wireless_nlevent_init(
- subsys_initcall(wireless_nlevent_init);
-
- /* Process events generated by the wireless layer or the driver. */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- static void wireless_nlevent_process(struct work_struct *work)
- {
- struct sk_buff *skb;
-@@ -382,6 +383,20 @@ static void wireless_nlevent_process(str
-
- rtnl_unlock();
- }
-+#else
-+static void wireless_nlevent_process(struct work_struct *work)
-+{
-+ struct sk_buff *skb;
-+ struct net *net;
-+
-+ rtnl_lock();
-+
-+ while ((skb = skb_dequeue(&net->wext_nlevents)))
-+ rtnl_notify(skb, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC);
-+
-+ rtnl_unlock();
-+}
-+#endif
-
- static DECLARE_WORK(wireless_nlevent_work, wireless_nlevent_process);
-
---- a/net/wireless/wext-proc.c
-+++ b/net/wireless/wext-proc.c
-@@ -98,7 +98,11 @@ static void *wireless_dev_seq_start(stru
- return SEQ_START_TOKEN;
-
- off = 1;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
- for_each_netdev(net, dev)
-+#else
-+ for_each_netdev(net)
-+#endif
- if (off++ == *pos)
- return dev;
- return NULL;
diff --git a/patches/collateral-evolutions/network/04-netns/INFO b/patches/collateral-evolutions/network/04-netns/INFO
new file mode 100644
index 00000000..6f21d3de
--- /dev/null
+++ b/patches/collateral-evolutions/network/04-netns/INFO
@@ -0,0 +1,6 @@
+The only other namespace change. Note that pach 01-netdev.patch
+also has some other namespace changes there, look at that file
+for the other changes. It'd be nice to figure out a way to
+bring thise here cleanly and seprately but they touch the same
+files...
+
diff --git a/patches/collateral-evolutions/network/04-netns/net_wireless_core.c b/patches/collateral-evolutions/network/04-netns/net_wireless_core.c
new file mode 100644
index 00000000..08d440e4
--- /dev/null
+++ b/patches/collateral-evolutions/network/04-netns/net_wireless_core.c
@@ -0,0 +1,86 @@
+--- a/net/wireless/core.c
++++ b/net/wireless/core.c
+@@ -160,6 +160,7 @@
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ int cfg80211_switch_netns(struct cfg80211_registered_device *rdev,
+ struct net *net)
+ {
+@@ -204,6 +205,7 @@
+
+ return 0;
+ }
++#endif
+
+ static void cfg80211_rfkill_poll(struct rfkill *rfkill, void *data)
+ {
+@@ -372,7 +374,9 @@
+ rdev->wiphy.flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT;
+ #endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ wiphy_net_set(&rdev->wiphy, &init_net);
++#endif
+
+ rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
+ rdev->rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
+@@ -919,8 +923,10 @@
+ wdev->identifier = ++rdev->wdev_id;
+ list_add_rcu(&wdev->list, &rdev->wdev_list);
+ rdev->devlist_generation++;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ /* can only change netns with wiphy */
+ dev->features |= NETIF_F_NETNS_LOCAL;
++#endif
+
+ if (sysfs_create_link(&dev->dev.kobj, &rdev->wiphy.dev.kobj,
+ "phy80211")) {
+@@ -1081,6 +1087,7 @@
+ .notifier_call = cfg80211_netdev_notifier_call,
+ };
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ static void __net_exit cfg80211_pernet_exit(struct net *net)
+ {
+ struct cfg80211_registered_device *rdev;
+@@ -1098,14 +1105,17 @@
+ static struct pernet_operations cfg80211_pernet_ops = {
+ .exit = cfg80211_pernet_exit,
+ };
++#endif
+
+ static int __init cfg80211_init(void)
+ {
+ int err;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ err = register_pernet_device(&cfg80211_pernet_ops);
+ if (err)
+ goto out_fail_pernet;
++#endif
+
+ err = wiphy_sysfs_init();
+ if (err)
+@@ -1142,8 +1152,10 @@
+ out_fail_notifier:
+ wiphy_sysfs_exit();
+ out_fail_sysfs:
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ unregister_pernet_device(&cfg80211_pernet_ops);
+ out_fail_pernet:
++#endif
+ return err;
+ }
+ subsys_initcall(cfg80211_init);
+@@ -1155,7 +1167,9 @@
+ unregister_netdevice_notifier(&cfg80211_netdev_notifier);
+ wiphy_sysfs_exit();
+ regulatory_exit();
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ unregister_pernet_device(&cfg80211_pernet_ops);
++#endif
+ destroy_workqueue(cfg80211_wq);
+ }
+ module_exit(cfg80211_exit);
diff --git a/patches/collateral-evolutions/network/04-netns/net_wireless_nl80211.c b/patches/collateral-evolutions/network/04-netns/net_wireless_nl80211.c
new file mode 100644
index 00000000..ed189bad
--- /dev/null
+++ b/patches/collateral-evolutions/network/04-netns/net_wireless_nl80211.c
@@ -0,0 +1,12 @@
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -6740,7 +6740,9 @@
+ if (!net_eq(wiphy_net(&rdev->wiphy), net))
+ err = cfg80211_switch_netns(rdev, net);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ put_net(net);
++#endif
+ return err;
+ }
+
diff --git a/patches/collateral-evolutions/network/04-netns/net_wireless_wext-core.c b/patches/collateral-evolutions/network/04-netns/net_wireless_wext-core.c
new file mode 100644
index 00000000..3f62024a
--- /dev/null
+++ b/patches/collateral-evolutions/network/04-netns/net_wireless_wext-core.c
@@ -0,0 +1,31 @@
+--- a/net/wireless/wext-core.c
++++ b/net/wireless/wext-core.c
+@@ -367,6 +367,7 @@
+ subsys_initcall(wireless_nlevent_init);
+
+ /* Process events generated by the wireless layer or the driver. */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ static void wireless_nlevent_process(struct work_struct *work)
+ {
+ struct sk_buff *skb;
+@@ -382,6 +383,20 @@
+
+ rtnl_unlock();
+ }
++#else
++static void wireless_nlevent_process(struct work_struct *work)
++{
++ struct sk_buff *skb;
++ struct net *net;
++
++ rtnl_lock();
++
++ while ((skb = skb_dequeue(&net->wext_nlevents)))
++ rtnl_notify(skb, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC);
++
++ rtnl_unlock();
++}
++#endif
+
+ static DECLARE_WORK(wireless_nlevent_work, wireless_nlevent_process);
+
diff --git a/patches/collateral-evolutions/network/04-netns/net_wireless_wext-proc.c b/patches/collateral-evolutions/network/04-netns/net_wireless_wext-proc.c
new file mode 100644
index 00000000..73420e34
--- /dev/null
+++ b/patches/collateral-evolutions/network/04-netns/net_wireless_wext-proc.c
@@ -0,0 +1,14 @@
+--- a/net/wireless/wext-proc.c
++++ b/net/wireless/wext-proc.c
+@@ -98,7 +98,11 @@
+ return SEQ_START_TOKEN;
+
+ off = 1;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
+ for_each_netdev(net, dev)
++#else
++ for_each_netdev(net)
++#endif
+ if (off++ == *pos)
+ return dev;
+ return NULL;
diff --git a/patches/collateral-evolutions/network/05-usb.patch b/patches/collateral-evolutions/network/05-usb.patch
deleted file mode 100644
index 4303b565..00000000
--- a/patches/collateral-evolutions/network/05-usb.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-USB opt soft_unbid was added as of 2.6.27.
-
---- a/drivers/net/wireless/p54/p54usb.c
-+++ b/drivers/net/wireless/p54/p54usb.c
-@@ -1137,7 +1137,9 @@ static struct usb_driver p54u_driver = {
- .resume = p54u_resume,
- .reset_resume = p54u_resume,
- #endif /* CONFIG_PM */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
- .soft_unbind = 1,
-+#endif
- .disable_hub_initiated_lpm = 1,
- };
-
---- a/drivers/net/wireless/ath/ath9k/hif_usb.c
-+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
-@@ -1370,7 +1370,9 @@ static struct usb_driver ath9k_hif_usb_d
- .reset_resume = ath9k_hif_usb_resume,
- #endif
- .id_table = ath9k_hif_usb_ids,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
- .soft_unbind = 1,
-+#endif
- .disable_hub_initiated_lpm = 1,
- };
-
diff --git a/patches/collateral-evolutions/network/05-usb/INFO b/patches/collateral-evolutions/network/05-usb/INFO
new file mode 100644
index 00000000..328ba002
--- /dev/null
+++ b/patches/collateral-evolutions/network/05-usb/INFO
@@ -0,0 +1,2 @@
+USB opt soft_unbid was added as of 2.6.27.
+
diff --git a/patches/collateral-evolutions/network/05-usb/drivers_net_wireless_ath_ath9k_hif_usb.c b/patches/collateral-evolutions/network/05-usb/drivers_net_wireless_ath_ath9k_hif_usb.c
new file mode 100644
index 00000000..96077326
--- /dev/null
+++ b/patches/collateral-evolutions/network/05-usb/drivers_net_wireless_ath_ath9k_hif_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
++++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
+@@ -1370,7 +1370,9 @@
+ .reset_resume = ath9k_hif_usb_resume,
+ #endif
+ .id_table = ath9k_hif_usb_ids,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
+ .soft_unbind = 1,
++#endif
+ .disable_hub_initiated_lpm = 1,
+ };
+
diff --git a/patches/collateral-evolutions/network/05-usb/drivers_net_wireless_p54_p54usb.c b/patches/collateral-evolutions/network/05-usb/drivers_net_wireless_p54_p54usb.c
new file mode 100644
index 00000000..4662b020
--- /dev/null
+++ b/patches/collateral-evolutions/network/05-usb/drivers_net_wireless_p54_p54usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/p54/p54usb.c
++++ b/drivers/net/wireless/p54/p54usb.c
+@@ -1137,7 +1137,9 @@
+ .resume = p54u_resume,
+ .reset_resume = p54u_resume,
+ #endif /* CONFIG_PM */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
+ .soft_unbind = 1,
++#endif
+ .disable_hub_initiated_lpm = 1,
+ };
+
diff --git a/patches/collateral-evolutions/network/06-header-changes.patch b/patches/collateral-evolutions/network/06-header-changes.patch
deleted file mode 100644
index 647ce845..00000000
--- a/patches/collateral-evolutions/network/06-header-changes.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-
-Every kernel release there are a few changes to headers
-made. Some code gets shifted around between headers or
-new headers are defined. This patch deals with such
-cases.
-
---- a/drivers/net/wireless/ath/ath6kl/htc_pipe.c
-+++ b/drivers/net/wireless/ath/ath6kl/htc_pipe.c
-@@ -18,6 +18,10 @@
- #include "debug.h"
- #include "hif-ops.h"
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
-+#include <asm/unaligned.h>
-+#endif
-+
- #define HTC_PACKET_CONTAINER_ALLOCATION 32
- #define HTC_CONTROL_BUFFER_SIZE (HTC_MAX_CTRL_MSG_LEN + HTC_HDR_LENGTH)
-
---- a/drivers/net/wireless/b43/phy_common.h
-+++ b/drivers/net/wireless/b43/phy_common.h
-@@ -3,6 +3,9 @@
-
- #include <linux/types.h>
- #include <linux/nl80211.h>
-+#if (LINUX_VERSION_CODE == KERNEL_VERSION(2,6,28))
-+#include <asm/atomic.h>
-+#endif
-
- struct b43_wldev;
-
---- a/drivers/net/wireless/rtlwifi/base.c
-+++ b/drivers/net/wireless/rtlwifi/base.c
-@@ -36,6 +36,7 @@
- #include "regd.h"
-
- #include <linux/ip.h>
-+#include <linux/in.h>
- #include <linux/module.h>
-
- /*
---- a/drivers/net/wireless/ti/wl1251/main.c
-+++ b/drivers/net/wireless/ti/wl1251/main.c
-@@ -24,6 +24,9 @@
- #include <linux/firmware.h>
- #include <linux/delay.h>
- #include <linux/irq.h>
-+#if (LINUX_VERSION_CODE == KERNEL_VERSION(2,6,28))
-+#include <linux/device.h>
-+#endif
- #include <linux/crc32.h>
- #include <linux/etherdevice.h>
- #include <linux/vmalloc.h>
---- a/drivers/net/wireless/ti/wl1251/spi.c
-+++ b/drivers/net/wireless/ti/wl1251/spi.c
-@@ -24,6 +24,9 @@
- #include <linux/module.h>
- #include <linux/slab.h>
- #include <linux/crc7.h>
-+#if (LINUX_VERSION_CODE == KERNEL_VERSION(2,6,28))
-+#include <linux/device.h>
-+#endif
- #include <linux/spi/spi.h>
- #include <linux/wl12xx.h>
-
---- a/net/mac80211/key.c
-+++ b/net/mac80211/key.c
-@@ -24,6 +24,9 @@
- #include "aes_ccm.h"
- #include "aes_cmac.h"
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
-+#include <asm/unaligned.h>
-+#endif
-
- /**
- * DOC: Key handling basics
---- a/net/mac80211/pm.c
-+++ b/net/mac80211/pm.c
-@@ -1,5 +1,6 @@
- #include <net/mac80211.h>
- #include <net/rtnetlink.h>
-+#include <linux/export.h>
-
- #include "ieee80211_i.h"
- #include "mesh.h"
---- a/net/bluetooth/bnep/sock.c
-+++ b/net/bluetooth/bnep/sock.c
-@@ -26,6 +26,7 @@
-
- #include <linux/export.h>
- #include <linux/file.h>
-+#include <linux/compat.h>
-
- #include "bnep.h"
-
---- a/net/bluetooth/hci_sock.c
-+++ b/net/bluetooth/hci_sock.c
-@@ -25,6 +25,7 @@
- /* Bluetooth HCI sockets. */
-
- #include <linux/export.h>
-+#include <linux/compat.h>
- #include <asm/unaligned.h>
-
- #include <net/bluetooth/bluetooth.h>
---- a/net/bluetooth/hidp/sock.c
-+++ b/net/bluetooth/hidp/sock.c
-@@ -22,6 +22,7 @@
-
- #include <linux/export.h>
- #include <linux/file.h>
-+#include <linux/compat.h>
-
- #include "hidp.h"
-
---- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
-+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
-@@ -20,6 +20,7 @@
- #include <linux/moduleparam.h>
- #include <linux/inetdevice.h>
- #include <linux/export.h>
-+#include <asm/unaligned.h>
-
- #include "core.h"
- #include "cfg80211.h"
---- a/drivers/net/wireless/mwifiex/usb.c
-+++ b/drivers/net/wireless/mwifiex/usb.c
-@@ -19,6 +19,7 @@
-
- #include "main.h"
- #include "usb.h"
-+#include <linux/usb/audio.h>
-
- #define USB_VERSION "1.0"
-
---- a/net/wireless/util.c
-+++ b/net/wireless/util.c
-@@ -10,6 +10,7 @@
- #include <net/cfg80211.h>
- #include <net/ip.h>
- #include <net/dsfield.h>
-+#include <asm/unaligned.h>
- #include "core.h"
- #include "rdev-ops.h"
-
---- a/include/net/mac80211.h
-+++ b/include/net/mac80211.h
-@@ -20,6 +20,7 @@
- #include <linux/ieee80211.h>
- #include <net/cfg80211.h>
- #include <asm/unaligned.h>
-+#include <net/if_inet6.h>
-
- /**
- * DOC: Introduction
---- a/drivers/net/wireless/ti/wlcore/event.c
-+++ b/drivers/net/wireless/ti/wlcore/event.c
-@@ -21,6 +21,7 @@
- *
- */
-
-+#include <linux/export.h>
- #include "wlcore.h"
- #include "debug.h"
- #include "io.h"
---- a/drivers/net/wireless/ti/wlcore/scan.c
-+++ b/drivers/net/wireless/ti/wlcore/scan.c
-@@ -22,6 +22,7 @@
- */
-
- #include <linux/ieee80211.h>
-+#include <linux/export.h>
-
- #include "wlcore.h"
- #include "debug.h"
diff --git a/patches/collateral-evolutions/network/06-header-changes/INFO b/patches/collateral-evolutions/network/06-header-changes/INFO
new file mode 100644
index 00000000..eccf5d6d
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/INFO
@@ -0,0 +1,6 @@
+
+Every kernel release there are a few changes to headers
+made. Some code gets shifted around between headers or
+new headers are defined. This patch deals with such
+cases.
+
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_cfg80211.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_cfg80211.c
new file mode 100644
index 00000000..193faac3
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_cfg80211.c
@@ -0,0 +1,10 @@
+--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
++++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
+@@ -20,6 +20,7 @@
+ #include <linux/moduleparam.h>
+ #include <linux/inetdevice.h>
+ #include <linux/export.h>
++#include <asm/unaligned.h>
+
+ #include "core.h"
+ #include "cfg80211.h"
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_htc_pipe.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_htc_pipe.c
new file mode 100644
index 00000000..ef776914
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ath_ath6kl_htc_pipe.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath6kl/htc_pipe.c
++++ b/drivers/net/wireless/ath/ath6kl/htc_pipe.c
+@@ -18,6 +18,10 @@
+ #include "debug.h"
+ #include "hif-ops.h"
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
++#include <asm/unaligned.h>
++#endif
++
+ #define HTC_PACKET_CONTAINER_ALLOCATION 32
+ #define HTC_CONTROL_BUFFER_SIZE (HTC_MAX_CTRL_MSG_LEN + HTC_HDR_LENGTH)
+
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_b43_phy_common.h b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_b43_phy_common.h
new file mode 100644
index 00000000..1b8189ac
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_b43_phy_common.h
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/b43/phy_common.h
++++ b/drivers/net/wireless/b43/phy_common.h
+@@ -3,6 +3,9 @@
+
+ #include <linux/types.h>
+ #include <linux/nl80211.h>
++#if (LINUX_VERSION_CODE == KERNEL_VERSION(2,6,28))
++#include <asm/atomic.h>
++#endif
+
+ struct b43_wldev;
+
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_mwifiex_usb.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_mwifiex_usb.c
new file mode 100644
index 00000000..75a3db99
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_mwifiex_usb.c
@@ -0,0 +1,10 @@
+--- a/drivers/net/wireless/mwifiex/usb.c
++++ b/drivers/net/wireless/mwifiex/usb.c
+@@ -19,6 +19,7 @@
+
+ #include "main.h"
+ #include "usb.h"
++#include <linux/usb/audio.h>
+
+ #define USB_VERSION "1.0"
+
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_rtlwifi_base.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_rtlwifi_base.c
new file mode 100644
index 00000000..ea33c7d8
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_rtlwifi_base.c
@@ -0,0 +1,10 @@
+--- a/drivers/net/wireless/rtlwifi/base.c
++++ b/drivers/net/wireless/rtlwifi/base.c
+@@ -36,6 +36,7 @@
+ #include "regd.h"
+
+ #include <linux/ip.h>
++#include <linux/in.h>
+ #include <linux/module.h>
+
+ /*
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_main.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_main.c
new file mode 100644
index 00000000..4701f488
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_main.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ti/wl1251/main.c
++++ b/drivers/net/wireless/ti/wl1251/main.c
+@@ -24,6 +24,9 @@
+ #include <linux/firmware.h>
+ #include <linux/delay.h>
+ #include <linux/irq.h>
++#if (LINUX_VERSION_CODE == KERNEL_VERSION(2,6,28))
++#include <linux/device.h>
++#endif
+ #include <linux/crc32.h>
+ #include <linux/etherdevice.h>
+ #include <linux/vmalloc.h>
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_spi.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_spi.c
new file mode 100644
index 00000000..97850f0d
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wl1251_spi.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ti/wl1251/spi.c
++++ b/drivers/net/wireless/ti/wl1251/spi.c
+@@ -24,6 +24,9 @@
+ #include <linux/module.h>
+ #include <linux/slab.h>
+ #include <linux/crc7.h>
++#if (LINUX_VERSION_CODE == KERNEL_VERSION(2,6,28))
++#include <linux/device.h>
++#endif
+ #include <linux/spi/spi.h>
+ #include <linux/wl12xx.h>
+
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_event.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_event.c
new file mode 100644
index 00000000..3bc33964
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_event.c
@@ -0,0 +1,10 @@
+--- a/drivers/net/wireless/ti/wlcore/event.c
++++ b/drivers/net/wireless/ti/wlcore/event.c
+@@ -21,6 +21,7 @@
+ *
+ */
+
++#include <linux/export.h>
+ #include "wlcore.h"
+ #include "debug.h"
+ #include "io.h"
diff --git a/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_scan.c b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_scan.c
new file mode 100644
index 00000000..848aa82a
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/drivers_net_wireless_ti_wlcore_scan.c
@@ -0,0 +1,10 @@
+--- a/drivers/net/wireless/ti/wlcore/scan.c
++++ b/drivers/net/wireless/ti/wlcore/scan.c
+@@ -22,6 +22,7 @@
+ */
+
+ #include <linux/ieee80211.h>
++#include <linux/export.h>
+
+ #include "wlcore.h"
+ #include "debug.h"
diff --git a/patches/collateral-evolutions/network/06-header-changes/include_net_mac80211.h b/patches/collateral-evolutions/network/06-header-changes/include_net_mac80211.h
new file mode 100644
index 00000000..2ba84707
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/include_net_mac80211.h
@@ -0,0 +1,10 @@
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -20,6 +20,7 @@
+ #include <linux/ieee80211.h>
+ #include <net/cfg80211.h>
+ #include <asm/unaligned.h>
++#include <net/if_inet6.h>
+
+ /**
+ * DOC: Introduction
diff --git a/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_bnep_sock.c b/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_bnep_sock.c
new file mode 100644
index 00000000..9c949d26
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_bnep_sock.c
@@ -0,0 +1,10 @@
+--- a/net/bluetooth/bnep/sock.c
++++ b/net/bluetooth/bnep/sock.c
+@@ -26,6 +26,7 @@
+
+ #include <linux/export.h>
+ #include <linux/file.h>
++#include <linux/compat.h>
+
+ #include "bnep.h"
+
diff --git a/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hci_sock.c b/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hci_sock.c
new file mode 100644
index 00000000..08d68fd6
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hci_sock.c
@@ -0,0 +1,10 @@
+--- a/net/bluetooth/hci_sock.c
++++ b/net/bluetooth/hci_sock.c
+@@ -25,6 +25,7 @@
+ /* Bluetooth HCI sockets. */
+
+ #include <linux/export.h>
++#include <linux/compat.h>
+ #include <asm/unaligned.h>
+
+ #include <net/bluetooth/bluetooth.h>
diff --git a/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hidp_sock.c b/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hidp_sock.c
new file mode 100644
index 00000000..1e351761
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/net_bluetooth_hidp_sock.c
@@ -0,0 +1,10 @@
+--- a/net/bluetooth/hidp/sock.c
++++ b/net/bluetooth/hidp/sock.c
+@@ -22,6 +22,7 @@
+
+ #include <linux/export.h>
+ #include <linux/file.h>
++#include <linux/compat.h>
+
+ #include "hidp.h"
+
diff --git a/patches/collateral-evolutions/network/06-header-changes/net_mac80211_key.c b/patches/collateral-evolutions/network/06-header-changes/net_mac80211_key.c
new file mode 100644
index 00000000..7f8bbeb6
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/net_mac80211_key.c
@@ -0,0 +1,12 @@
+--- a/net/mac80211/key.c
++++ b/net/mac80211/key.c
+@@ -24,6 +24,9 @@
+ #include "aes_ccm.h"
+ #include "aes_cmac.h"
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
++#include <asm/unaligned.h>
++#endif
+
+ /**
+ * DOC: Key handling basics
diff --git a/patches/collateral-evolutions/network/06-header-changes/net_mac80211_pm.c b/patches/collateral-evolutions/network/06-header-changes/net_mac80211_pm.c
new file mode 100644
index 00000000..cd7ae0e8
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/net_mac80211_pm.c
@@ -0,0 +1,9 @@
+--- a/net/mac80211/pm.c
++++ b/net/mac80211/pm.c
+@@ -1,5 +1,6 @@
+ #include <net/mac80211.h>
+ #include <net/rtnetlink.h>
++#include <linux/export.h>
+
+ #include "ieee80211_i.h"
+ #include "mesh.h"
diff --git a/patches/collateral-evolutions/network/06-header-changes/net_wireless_util.c b/patches/collateral-evolutions/network/06-header-changes/net_wireless_util.c
new file mode 100644
index 00000000..ab9b61a5
--- /dev/null
+++ b/patches/collateral-evolutions/network/06-header-changes/net_wireless_util.c
@@ -0,0 +1,10 @@
+--- a/net/wireless/util.c
++++ b/net/wireless/util.c
+@@ -10,6 +10,7 @@
+ #include <net/cfg80211.h>
+ #include <net/ip.h>
+ #include <net/dsfield.h>
++#include <asm/unaligned.h>
+ #include "core.h"
+ #include "rdev-ops.h"
+
diff --git a/patches/collateral-evolutions/network/07-change-default-rate-alg/INFO b/patches/collateral-evolutions/network/07-change-default-rate-alg/INFO
new file mode 100644
index 00000000..60cdc350
--- /dev/null
+++ b/patches/collateral-evolutions/network/07-change-default-rate-alg/INFO
@@ -0,0 +1,12 @@
+
+Your current kernels configuration (.config and linux/autoconf.h)
+are always respected when compiling external modules. Because
+of this if you are using an old kernel which preferred the
+PID rate control algorithm we cannot force it to use minstrel
+instead. Minstrel is now the default rate control algorithm
+and we want you to use it. To let you use it we redefine here
+the CONFIG_MAC80211_RC_DEFAULT to CONFIG_COMPAT_MAC80211_RC_DEFAULT
+and define CONFIG_COMPAT_MAC80211_RC_DEFAULT on config.mk.
+Through the compat autoconf we then get it also defined there
+at compilation time.
+
diff --git a/patches/collateral-evolutions/network/07-change-default-rate-alg.patch b/patches/collateral-evolutions/network/07-change-default-rate-alg/net_mac80211_rate.c
index 0584f9d8..b6018e66 100644
--- a/patches/collateral-evolutions/network/07-change-default-rate-alg.patch
+++ b/patches/collateral-evolutions/network/07-change-default-rate-alg/net_mac80211_rate.c
@@ -1,18 +1,6 @@
-
-Your current kernels configuration (.config and linux/autoconf.h)
-are always respected when compiling external modules. Because
-of this if you are using an old kernel which preferred the
-PID rate control algorithm we cannot force it to use minstrel
-instead. Minstrel is now the default rate control algorithm
-and we want you to use it. To let you use it we redefine here
-the CONFIG_MAC80211_RC_DEFAULT to CONFIG_COMPAT_MAC80211_RC_DEFAULT
-and define CONFIG_COMPAT_MAC80211_RC_DEFAULT on config.mk.
-Through the compat autoconf we then get it also defined there
-at compilation time.
-
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
-@@ -24,7 +24,7 @@ struct rate_control_alg {
+@@ -24,7 +24,7 @@
static LIST_HEAD(rate_ctrl_algs);
static DEFINE_MUTEX(rate_ctrl_mutex);
@@ -21,7 +9,7 @@ at compilation time.
module_param(ieee80211_default_rc_algo, charp, 0644);
MODULE_PARM_DESC(ieee80211_default_rc_algo,
"Default rate control algorithm for mac80211 to use");
-@@ -120,8 +120,8 @@ ieee80211_rate_control_ops_get(const cha
+@@ -120,8 +120,8 @@
ops = ieee80211_try_rate_control_ops_get(ieee80211_default_rc_algo);
/* try built-in one if specific alg requested but not found */
diff --git a/patches/collateral-evolutions/network/08-rename-config-options.patch b/patches/collateral-evolutions/network/08-rename-config-options.patch
deleted file mode 100644
index c2ce7b73..00000000
--- a/patches/collateral-evolutions/network/08-rename-config-options.patch
+++ /dev/null
@@ -1,192 +0,0 @@
-This file renames CONFIG_ options that may be defined in older
-kernels but that we know we can *safely* rename to other config
-option names to ensure we disable building these options at
-through this framework. An example here is ath9k's rate control
-aglorithm is always selected by default via CONFIG_ATH9K_RATE_CONTROL.
-By renaming this to CONFIG_COMPAT_ATH9K_RATE_CONTROL we have
-the flexibility to disable it for a replacement driver.
-
-In kernel 2.6.26 and older CONFIG_IWL4965 was build as an extra
-module, but now it is directly included in the iwlagn.
-
-CONFIG_IWL4965 has to be set to y, to build correctly.
-
-zd1211rw does not build with kernel < 2.6.28, but it is often activated
-in the kernel config of older kernels. We rename the option to
-deactivate it on older kernels.
-CONFIG_BT_L2CAP and CONFIG_BT_SCO are boolean now, but often set to m
-in the kernel config.
-
-CONFIG_BT_HIDP does not build with older kernel versions.
-
---- a/drivers/net/wireless/Makefile
-+++ b/drivers/net/wireless/Makefile
-@@ -21,7 +21,7 @@ obj-$(CONFIG_PRISM54) += prism54/
- obj-$(CONFIG_HOSTAP) += hostap/
- obj-$(CONFIG_B43) += b43/
- obj-$(CONFIG_B43LEGACY) += b43legacy/
--obj-$(CONFIG_ZD1211RW) += zd1211rw/
-+obj-$(CONFIG_COMPAT_ZD1211RW) += zd1211rw/
- obj-$(CONFIG_RTL8180) += rtl818x/
- obj-$(CONFIG_RTL8187) += rtl818x/
- obj-$(CONFIG_RTLWIFI) += rtlwifi/
-@@ -49,11 +49,11 @@ obj-$(CONFIG_P54_COMMON) += p54/
-
- obj-$(CONFIG_ATH_CARDS) += ath/
-
--obj-$(CONFIG_MAC80211_HWSIM) += mac80211_hwsim.o
-+obj-$(CONFIG_COMPAT_MAC80211_HWSIM) += mac80211_hwsim.o
-
- obj-$(CONFIG_WL_TI) += ti/
-
--obj-$(CONFIG_MWIFIEX) += mwifiex/
-+obj-$(CONFIG_COMPAT_MWIFIEX) += mwifiex/
-
- obj-$(CONFIG_BRCMFMAC) += brcm80211/
- obj-$(CONFIG_BRCMSMAC) += brcm80211/
---- a/drivers/net/wireless/iwlegacy/Makefile
-+++ b/drivers/net/wireless/iwlegacy/Makefile
-@@ -5,7 +5,7 @@ iwlegacy-$(CONFIG_IWLEGACY_DEBUGFS) += d
- iwlegacy-objs += $(iwlegacy-m)
-
- # 4965
--obj-$(CONFIG_IWL4965) += iwl4965.o
-+obj-$(CONFIG_COMPAT_IWL4965) += iwl4965.o
- iwl4965-objs := 4965.o 4965-mac.o 4965-rs.o 4965-calib.o
- iwl4965-$(CONFIG_IWLEGACY_DEBUGFS) += 4965-debug.o
-
---- a/drivers/net/wireless/iwlegacy/common.h
-+++ b/drivers/net/wireless/iwlegacy/common.h
-@@ -1348,7 +1348,7 @@ struct il_priv {
-
- } _3945;
- #endif
--#if defined(CONFIG_IWL4965) || defined(CONFIG_IWL4965_MODULE)
-+#if defined(CONFIG_COMPAT_IWL4965) || defined(CONFIG_COMPAT_IWL4965_MODULE)
- struct {
- struct il_rx_phy_res last_phy_res;
- bool last_phy_res_valid;
---- a/drivers/net/wireless/libertas/Makefile
-+++ b/drivers/net/wireless/libertas/Makefile
-@@ -17,5 +17,5 @@ libertas_spi-objs += if_spi.o
- obj-$(CONFIG_LIBERTAS) += libertas.o
- obj-$(CONFIG_LIBERTAS_USB) += usb8xxx.o
- obj-$(CONFIG_LIBERTAS_CS) += libertas_cs.o
--obj-$(CONFIG_LIBERTAS_SDIO) += libertas_sdio.o
-+obj-$(CONFIG_COMPAT_LIBERTAS_SDIO) += libertas_sdio.o
- obj-$(CONFIG_LIBERTAS_SPI) += libertas_spi.o
---- a/drivers/net/wireless/zd1211rw/Makefile
-+++ b/drivers/net/wireless/zd1211rw/Makefile
-@@ -1,4 +1,4 @@
--obj-$(CONFIG_ZD1211RW) += zd1211rw.o
-+obj-$(CONFIG_COMPAT_ZD1211RW) += zd1211rw.o
-
- zd1211rw-objs := zd_chip.o zd_mac.o \
- zd_rf_al2230.o zd_rf_rf2959.o \
---- a/net/bluetooth/Makefile
-+++ b/net/bluetooth/Makefile
-@@ -6,7 +6,7 @@ obj-$(CONFIG_BT) += bluetooth.o
- obj-$(CONFIG_BT_RFCOMM) += rfcomm/
- obj-$(CONFIG_BT_BNEP) += bnep/
- obj-$(CONFIG_BT_CMTP) += cmtp/
--obj-$(CONFIG_BT_HIDP) += hidp/
-+obj-$(CONFIG_COMPAT_BT_HIDP) += hidp/
-
- bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o \
- hci_sock.o hci_sysfs.o l2cap_core.o l2cap_sock.o smp.o sco.o lib.o \
---- a/net/bluetooth/hidp/Makefile
-+++ b/net/bluetooth/hidp/Makefile
-@@ -2,6 +2,6 @@
- # Makefile for the Linux Bluetooth HIDP layer
- #
-
--obj-$(CONFIG_BT_HIDP) += hidp.o
-+obj-$(CONFIG_COMPAT_BT_HIDP) += hidp.o
-
- hidp-objs := core.o sock.o
---- a/drivers/net/wireless/ti/wl1251/Makefile
-+++ b/drivers/net/wireless/ti/wl1251/Makefile
-@@ -4,7 +4,7 @@ wl1251_spi-objs += spi.o
- wl1251_sdio-objs += sdio.o
-
- obj-$(CONFIG_WL1251) += wl1251.o
--obj-$(CONFIG_WL1251_SPI) += wl1251_spi.o
--obj-$(CONFIG_WL1251_SDIO) += wl1251_sdio.o
-+obj-$(CONFIG_COMPAT_WL1251_SPI)+= wl1251_spi.o
-+obj-$(CONFIG_COMPAT_WL1251_SDIO)+= wl1251_sdio.o
-
- ccflags-y += -D__CHECK_ENDIAN__
---- a/drivers/net/wireless/ath/ath9k/Makefile
-+++ b/drivers/net/wireless/ath/ath9k/Makefile
-@@ -8,7 +8,7 @@ ath9k-y += beacon.o \
- antenna.o
-
- ath9k-$(CONFIG_ATH9K_BTCOEX_SUPPORT) += mci.o
--ath9k-$(CONFIG_ATH9K_RATE_CONTROL) += rc.o
-+ath9k-$(CONFIG_COMPAT_ATH9K_RATE_CONTROL) += rc.o
- ath9k-$(CONFIG_ATH9K_PCI) += pci.o
- ath9k-$(CONFIG_ATH9K_AHB) += ahb.o
- ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -809,7 +809,7 @@ void ath9k_set_hw_capab(struct ath_softc
- sc->ant_rx = hw->wiphy->available_antennas_rx;
- sc->ant_tx = hw->wiphy->available_antennas_tx;
-
--#ifdef CONFIG_ATH9K_RATE_CONTROL
-+#ifdef CONFIG_COMPAT_ATH9K_RATE_CONTROL
- hw->rate_control_algorithm = "ath9k_rate_control";
- #endif
-
---- a/drivers/net/wireless/ath/ath9k/rc.h
-+++ b/drivers/net/wireless/ath/ath9k/rc.h
-@@ -231,7 +231,7 @@ static inline void ath_debug_stat_retrie
- }
- #endif
-
--#ifdef CONFIG_ATH9K_RATE_CONTROL
-+#ifdef CONFIG_COMPAT_ATH9K_RATE_CONTROL
- int ath_rate_control_register(void);
- void ath_rate_control_unregister(void);
- #else
---- a/net/bluetooth/rfcomm/Makefile
-+++ b/net/bluetooth/rfcomm/Makefile
-@@ -5,4 +5,4 @@
- obj-$(CONFIG_BT_RFCOMM) += rfcomm.o
-
- rfcomm-y := core.o sock.o
--rfcomm-$(CONFIG_BT_RFCOMM_TTY) += tty.o
-+rfcomm-$(CONFIG_COMPAT_BT_RFCOMM_TTY) += tty.o
---- a/include/net/bluetooth/rfcomm.h
-+++ b/include/net/bluetooth/rfcomm.h
-@@ -351,7 +351,7 @@ struct rfcomm_dev_list_req {
-
- int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);
-
--#ifdef CONFIG_BT_RFCOMM_TTY
-+#ifdef CONFIG_COMPAT_BT_RFCOMM_TTY
- int rfcomm_init_ttys(void);
- void rfcomm_cleanup_ttys(void);
- #else
---- a/net/bluetooth/rfcomm/sock.c
-+++ b/net/bluetooth/rfcomm/sock.c
-@@ -860,7 +860,7 @@ static int rfcomm_sock_ioctl(struct sock
- err = bt_sock_ioctl(sock, cmd, arg);
-
- if (err == -ENOIOCTLCMD) {
--#ifdef CONFIG_BT_RFCOMM_TTY
-+#ifdef CONFIG_COMPAT_BT_RFCOMM_TTY
- lock_sock(sk);
- err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg);
- release_sock(sk);
---- a/drivers/net/wireless/mwifiex/Makefile
-+++ b/drivers/net/wireless/mwifiex/Makefile
-@@ -41,7 +41,7 @@ mwifiex-y += uap_txrx.o
- mwifiex-y += cfg80211.o
- mwifiex-y += ethtool.o
- mwifiex-$(CONFIG_DEBUG_FS) += debugfs.o
--obj-$(CONFIG_MWIFIEX) += mwifiex.o
-+obj-$(CONFIG_COMPAT_MWIFIEX) += mwifiex.o
-
- mwifiex_sdio-y += sdio.o
- obj-$(CONFIG_MWIFIEX_SDIO) += mwifiex_sdio.o
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/INFO b/patches/collateral-evolutions/network/08-rename-config-options/INFO
new file mode 100644
index 00000000..124c454d
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/INFO
@@ -0,0 +1,21 @@
+This file renames CONFIG_ options that may be defined in older
+kernels but that we know we can *safely* rename to other config
+option names to ensure we disable building these options at
+through this framework. An example here is ath9k's rate control
+aglorithm is always selected by default via CONFIG_ATH9K_RATE_CONTROL.
+By renaming this to CONFIG_COMPAT_ATH9K_RATE_CONTROL we have
+the flexibility to disable it for a replacement driver.
+
+In kernel 2.6.26 and older CONFIG_IWL4965 was build as an extra
+module, but now it is directly included in the iwlagn.
+
+CONFIG_IWL4965 has to be set to y, to build correctly.
+
+zd1211rw does not build with kernel < 2.6.28, but it is often activated
+in the kernel config of older kernels. We rename the option to
+deactivate it on older kernels.
+CONFIG_BT_L2CAP and CONFIG_BT_SCO are boolean now, but often set to m
+in the kernel config.
+
+CONFIG_BT_HIDP does not build with older kernel versions.
+
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_Makefile
new file mode 100644
index 00000000..e9e7c19b
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_Makefile
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/Makefile
++++ b/drivers/net/wireless/Makefile
+@@ -21,7 +21,7 @@
+ obj-$(CONFIG_HOSTAP) += hostap/
+ obj-$(CONFIG_B43) += b43/
+ obj-$(CONFIG_B43LEGACY) += b43legacy/
+-obj-$(CONFIG_ZD1211RW) += zd1211rw/
++obj-$(CONFIG_COMPAT_ZD1211RW) += zd1211rw/
+ obj-$(CONFIG_RTL8180) += rtl818x/
+ obj-$(CONFIG_RTL8187) += rtl818x/
+ obj-$(CONFIG_RTLWIFI) += rtlwifi/
+@@ -49,11 +49,11 @@
+
+ obj-$(CONFIG_ATH_CARDS) += ath/
+
+-obj-$(CONFIG_MAC80211_HWSIM) += mac80211_hwsim.o
++obj-$(CONFIG_COMPAT_MAC80211_HWSIM) += mac80211_hwsim.o
+
+ obj-$(CONFIG_WL_TI) += ti/
+
+-obj-$(CONFIG_MWIFIEX) += mwifiex/
++obj-$(CONFIG_COMPAT_MWIFIEX) += mwifiex/
+
+ obj-$(CONFIG_BRCMFMAC) += brcm80211/
+ obj-$(CONFIG_BRCMSMAC) += brcm80211/
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_Makefile
new file mode 100644
index 00000000..4b3e5e63
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_Makefile
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath9k/Makefile
++++ b/drivers/net/wireless/ath/ath9k/Makefile
+@@ -8,7 +8,7 @@
+ antenna.o
+
+ ath9k-$(CONFIG_ATH9K_BTCOEX_SUPPORT) += mci.o
+-ath9k-$(CONFIG_ATH9K_RATE_CONTROL) += rc.o
++ath9k-$(CONFIG_COMPAT_ATH9K_RATE_CONTROL) += rc.o
+ ath9k-$(CONFIG_ATH9K_PCI) += pci.o
+ ath9k-$(CONFIG_ATH9K_AHB) += ahb.o
+ ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_init.c b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_init.c
new file mode 100644
index 00000000..e88243d6
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_init.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -809,7 +809,7 @@
+ sc->ant_rx = hw->wiphy->available_antennas_rx;
+ sc->ant_tx = hw->wiphy->available_antennas_tx;
+
+-#ifdef CONFIG_ATH9K_RATE_CONTROL
++#ifdef CONFIG_COMPAT_ATH9K_RATE_CONTROL
+ hw->rate_control_algorithm = "ath9k_rate_control";
+ #endif
+
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_rc.h b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_rc.h
new file mode 100644
index 00000000..41c6102f
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ath_ath9k_rc.h
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath9k/rc.h
++++ b/drivers/net/wireless/ath/ath9k/rc.h
+@@ -231,7 +231,7 @@
+ }
+ #endif
+
+-#ifdef CONFIG_ATH9K_RATE_CONTROL
++#ifdef CONFIG_COMPAT_ATH9K_RATE_CONTROL
+ int ath_rate_control_register(void);
+ void ath_rate_control_unregister(void);
+ #else
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_Makefile
new file mode 100644
index 00000000..a34a591f
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_Makefile
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/iwlegacy/Makefile
++++ b/drivers/net/wireless/iwlegacy/Makefile
+@@ -5,7 +5,7 @@
+ iwlegacy-objs += $(iwlegacy-m)
+
+ # 4965
+-obj-$(CONFIG_IWL4965) += iwl4965.o
++obj-$(CONFIG_COMPAT_IWL4965) += iwl4965.o
+ iwl4965-objs := 4965.o 4965-mac.o 4965-rs.o 4965-calib.o
+ iwl4965-$(CONFIG_IWLEGACY_DEBUGFS) += 4965-debug.o
+
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_common.h b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_common.h
new file mode 100644
index 00000000..2cc58ee0
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_iwlegacy_common.h
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/iwlegacy/common.h
++++ b/drivers/net/wireless/iwlegacy/common.h
+@@ -1348,7 +1348,7 @@
+
+ } _3945;
+ #endif
+-#if defined(CONFIG_IWL4965) || defined(CONFIG_IWL4965_MODULE)
++#if defined(CONFIG_COMPAT_IWL4965) || defined(CONFIG_COMPAT_IWL4965_MODULE)
+ struct {
+ struct il_rx_phy_res last_phy_res;
+ bool last_phy_res_valid;
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_libertas_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_libertas_Makefile
new file mode 100644
index 00000000..2ef885fa
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_libertas_Makefile
@@ -0,0 +1,9 @@
+--- a/drivers/net/wireless/libertas/Makefile
++++ b/drivers/net/wireless/libertas/Makefile
+@@ -17,5 +17,5 @@
+ obj-$(CONFIG_LIBERTAS) += libertas.o
+ obj-$(CONFIG_LIBERTAS_USB) += usb8xxx.o
+ obj-$(CONFIG_LIBERTAS_CS) += libertas_cs.o
+-obj-$(CONFIG_LIBERTAS_SDIO) += libertas_sdio.o
++obj-$(CONFIG_COMPAT_LIBERTAS_SDIO) += libertas_sdio.o
+ obj-$(CONFIG_LIBERTAS_SPI) += libertas_spi.o
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_mwifiex_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_mwifiex_Makefile
new file mode 100644
index 00000000..0c6e1f03
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_mwifiex_Makefile
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/mwifiex/Makefile
++++ b/drivers/net/wireless/mwifiex/Makefile
+@@ -41,7 +41,7 @@
+ mwifiex-y += cfg80211.o
+ mwifiex-y += ethtool.o
+ mwifiex-$(CONFIG_DEBUG_FS) += debugfs.o
+-obj-$(CONFIG_MWIFIEX) += mwifiex.o
++obj-$(CONFIG_COMPAT_MWIFIEX) += mwifiex.o
+
+ mwifiex_sdio-y += sdio.o
+ obj-$(CONFIG_MWIFIEX_SDIO) += mwifiex_sdio.o
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ti_wl1251_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ti_wl1251_Makefile
new file mode 100644
index 00000000..e098d0ed
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_ti_wl1251_Makefile
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ti/wl1251/Makefile
++++ b/drivers/net/wireless/ti/wl1251/Makefile
+@@ -4,7 +4,7 @@
+ wl1251_sdio-objs += sdio.o
+
+ obj-$(CONFIG_WL1251) += wl1251.o
+-obj-$(CONFIG_WL1251_SPI) += wl1251_spi.o
+-obj-$(CONFIG_WL1251_SDIO) += wl1251_sdio.o
++obj-$(CONFIG_COMPAT_WL1251_SPI)+= wl1251_spi.o
++obj-$(CONFIG_COMPAT_WL1251_SDIO)+= wl1251_sdio.o
+
+ ccflags-y += -D__CHECK_ENDIAN__
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_zd1211rw_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_zd1211rw_Makefile
new file mode 100644
index 00000000..7f89efdb
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/drivers_net_wireless_zd1211rw_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/net/wireless/zd1211rw/Makefile
++++ b/drivers/net/wireless/zd1211rw/Makefile
+@@ -1,4 +1,4 @@
+-obj-$(CONFIG_ZD1211RW) += zd1211rw.o
++obj-$(CONFIG_COMPAT_ZD1211RW) += zd1211rw.o
+
+ zd1211rw-objs := zd_chip.o zd_mac.o \
+ zd_rf_al2230.o zd_rf_rf2959.o \
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/include_net_bluetooth_rfcomm.h b/patches/collateral-evolutions/network/08-rename-config-options/include_net_bluetooth_rfcomm.h
new file mode 100644
index 00000000..e54d04c3
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/include_net_bluetooth_rfcomm.h
@@ -0,0 +1,11 @@
+--- a/include/net/bluetooth/rfcomm.h
++++ b/include/net/bluetooth/rfcomm.h
+@@ -351,7 +351,7 @@
+
+ int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);
+
+-#ifdef CONFIG_BT_RFCOMM_TTY
++#ifdef CONFIG_COMPAT_BT_RFCOMM_TTY
+ int rfcomm_init_ttys(void);
+ void rfcomm_cleanup_ttys(void);
+ #else
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_Makefile
new file mode 100644
index 00000000..92898fce
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_Makefile
@@ -0,0 +1,11 @@
+--- a/net/bluetooth/Makefile
++++ b/net/bluetooth/Makefile
+@@ -6,7 +6,7 @@
+ obj-$(CONFIG_BT_RFCOMM) += rfcomm/
+ obj-$(CONFIG_BT_BNEP) += bnep/
+ obj-$(CONFIG_BT_CMTP) += cmtp/
+-obj-$(CONFIG_BT_HIDP) += hidp/
++obj-$(CONFIG_COMPAT_BT_HIDP) += hidp/
+
+ bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o \
+ hci_sock.o hci_sysfs.o l2cap_core.o l2cap_sock.o smp.o sco.o lib.o \
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_hidp_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_hidp_Makefile
new file mode 100644
index 00000000..581e3a76
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_hidp_Makefile
@@ -0,0 +1,10 @@
+--- a/net/bluetooth/hidp/Makefile
++++ b/net/bluetooth/hidp/Makefile
+@@ -2,6 +2,6 @@
+ # Makefile for the Linux Bluetooth HIDP layer
+ #
+
+-obj-$(CONFIG_BT_HIDP) += hidp.o
++obj-$(CONFIG_COMPAT_BT_HIDP) += hidp.o
+
+ hidp-objs := core.o sock.o
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_Makefile b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_Makefile
new file mode 100644
index 00000000..59d26c18
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_Makefile
@@ -0,0 +1,8 @@
+--- a/net/bluetooth/rfcomm/Makefile
++++ b/net/bluetooth/rfcomm/Makefile
+@@ -5,4 +5,4 @@
+ obj-$(CONFIG_BT_RFCOMM) += rfcomm.o
+
+ rfcomm-y := core.o sock.o
+-rfcomm-$(CONFIG_BT_RFCOMM_TTY) += tty.o
++rfcomm-$(CONFIG_COMPAT_BT_RFCOMM_TTY) += tty.o
diff --git a/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_sock.c b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_sock.c
new file mode 100644
index 00000000..96594cc3
--- /dev/null
+++ b/patches/collateral-evolutions/network/08-rename-config-options/net_bluetooth_rfcomm_sock.c
@@ -0,0 +1,11 @@
+--- a/net/bluetooth/rfcomm/sock.c
++++ b/net/bluetooth/rfcomm/sock.c
+@@ -860,7 +860,7 @@
+ err = bt_sock_ioctl(sock, cmd, arg);
+
+ if (err == -ENOIOCTLCMD) {
+-#ifdef CONFIG_BT_RFCOMM_TTY
++#ifdef CONFIG_COMPAT_BT_RFCOMM_TTY
+ lock_sock(sk);
+ err = rfcomm_dev_ioctl(sk, cmd, (void __user *) arg);
+ release_sock(sk);
diff --git a/patches/collateral-evolutions/network/09-cfg80211-wext-padding.patch b/patches/collateral-evolutions/network/09-cfg80211-wext-padding.patch
deleted file mode 100644
index fcc721d0..00000000
--- a/patches/collateral-evolutions/network/09-cfg80211-wext-padding.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-This is a tricky one.
-
-Consider a kernel that has this code in net/wireless/wext-core.c:
-
-#ifdef CONFIG_CFG80211_WEXT
- if (dev->ieee80211_ptr && dev->ieee80211_ptr->wiphy)
- handlers = dev->ieee80211_ptr->wiphy->wext;
-#endif
-#ifdef CONFIG_WIRELESS_EXT
- if (dev->wireless_handlers)
- handlers = dev->wireless_handlers;
-#endif
-
-If a kernel is compiled without CONFIG_WIRELESS_EXT then
-compat-drivers can't do wireless extensions against it.
-However, if the kernel is compiled with CONFIG_CFG80211_WEXT
-then it will try to get the wext handlers from struct wiphy.
-
-Now, struct wiphy in the base kernel and struct wiphy in
-compat-drivers don't match, so the kernel crashes!!
-
-To fix this, add lots of padding to compat-drivers's
-struct wiphy so that the "wext" pointer is guaranteed
-to be NULL.
-
-Make sure the padding is larger than the struct so we
-don't ever run into this again because the wext pointer
-moved due to struct enlargements.
-
-
---- a/include/net/cfg80211.h
-+++ b/include/net/cfg80211.h
-@@ -2561,6 +2561,9 @@ struct wiphy_wowlan_support {
- struct wiphy {
- /* assign these fields before you register the wiphy */
-
-+#define WIPHY_COMPAT_PAD_SIZE 2048
-+ u8 padding[WIPHY_COMPAT_PAD_SIZE];
-+
- /* permanent MAC address(es) */
- u8 perm_addr[ETH_ALEN];
- u8 addr_mask[ETH_ALEN];
---- a/net/wireless/core.c
-+++ b/net/wireless/core.c
-@@ -316,6 +316,17 @@ struct wiphy *wiphy_new(const struct cfg
- struct cfg80211_registered_device *rdev;
- int alloc_size;
-
-+ /*
-+ * Make sure the padding is >= the rest of the struct so that we
-+ * always keep it large enough to pad out the entire original
-+ * kernel's struct. We really only need to make sure it's larger
-+ * than the kernel compat is compiled against, but since it'll
-+ * only increase in size make sure it's larger than the current
-+ * version of it. Subtract since it's included.
-+ */
-+ BUILD_BUG_ON(WIPHY_COMPAT_PAD_SIZE <
-+ sizeof(struct wiphy) - WIPHY_COMPAT_PAD_SIZE);
-+
- WARN_ON(ops->add_key && (!ops->del_key || !ops->set_default_key));
- WARN_ON(ops->auth && (!ops->assoc || !ops->deauth || !ops->disassoc));
- WARN_ON(ops->connect && !ops->disconnect);
diff --git a/patches/collateral-evolutions/network/09-cfg80211-wext-padding/INFO b/patches/collateral-evolutions/network/09-cfg80211-wext-padding/INFO
new file mode 100644
index 00000000..3d0044da
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-cfg80211-wext-padding/INFO
@@ -0,0 +1,30 @@
+This is a tricky one.
+
+Consider a kernel that has this code in net/wireless/wext-core.c:
+
+#ifdef CONFIG_CFG80211_WEXT
+ if (dev->ieee80211_ptr && dev->ieee80211_ptr->wiphy)
+ handlers = dev->ieee80211_ptr->wiphy->wext;
+#endif
+#ifdef CONFIG_WIRELESS_EXT
+ if (dev->wireless_handlers)
+ handlers = dev->wireless_handlers;
+#endif
+
+If a kernel is compiled without CONFIG_WIRELESS_EXT then
+compat-drivers can't do wireless extensions against it.
+However, if the kernel is compiled with CONFIG_CFG80211_WEXT
+then it will try to get the wext handlers from struct wiphy.
+
+Now, struct wiphy in the base kernel and struct wiphy in
+compat-drivers don't match, so the kernel crashes!!
+
+To fix this, add lots of padding to compat-drivers's
+struct wiphy so that the "wext" pointer is guaranteed
+to be NULL.
+
+Make sure the padding is larger than the struct so we
+don't ever run into this again because the wext pointer
+moved due to struct enlargements.
+
+
diff --git a/patches/collateral-evolutions/network/09-cfg80211-wext-padding/include_net_cfg80211.h b/patches/collateral-evolutions/network/09-cfg80211-wext-padding/include_net_cfg80211.h
new file mode 100644
index 00000000..0661f90d
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-cfg80211-wext-padding/include_net_cfg80211.h
@@ -0,0 +1,12 @@
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
+@@ -2561,6 +2561,9 @@
+ struct wiphy {
+ /* assign these fields before you register the wiphy */
+
++#define WIPHY_COMPAT_PAD_SIZE 2048
++ u8 padding[WIPHY_COMPAT_PAD_SIZE];
++
+ /* permanent MAC address(es) */
+ u8 perm_addr[ETH_ALEN];
+ u8 addr_mask[ETH_ALEN];
diff --git a/patches/collateral-evolutions/network/09-cfg80211-wext-padding/net_wireless_core.c b/patches/collateral-evolutions/network/09-cfg80211-wext-padding/net_wireless_core.c
new file mode 100644
index 00000000..064e1571
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-cfg80211-wext-padding/net_wireless_core.c
@@ -0,0 +1,20 @@
+--- a/net/wireless/core.c
++++ b/net/wireless/core.c
+@@ -316,6 +316,17 @@
+ struct cfg80211_registered_device *rdev;
+ int alloc_size;
+
++ /*
++ * Make sure the padding is >= the rest of the struct so that we
++ * always keep it large enough to pad out the entire original
++ * kernel's struct. We really only need to make sure it's larger
++ * than the kernel compat is compiled against, but since it'll
++ * only increase in size make sure it's larger than the current
++ * version of it. Subtract since it's included.
++ */
++ BUILD_BUG_ON(WIPHY_COMPAT_PAD_SIZE <
++ sizeof(struct wiphy) - WIPHY_COMPAT_PAD_SIZE);
++
+ WARN_ON(ops->add_key && (!ops->del_key || !ops->set_default_key));
+ WARN_ON(ops->auth && (!ops->assoc || !ops->deauth || !ops->disassoc));
+ WARN_ON(ops->connect && !ops->disconnect);
diff --git a/patches/collateral-evolutions/network/09-threaded-irq.patch b/patches/collateral-evolutions/network/09-threaded-irq.patch
deleted file mode 100644
index ecd1765c..00000000
--- a/patches/collateral-evolutions/network/09-threaded-irq.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-The 2.6.31 kernel has threaded IRQ support and b43 is the first
-wireless driver that makes use of it. To support threaded IRSs
-on older kernels we built our own struct compat_threaded_irq
-to queue_work() onto it as the kernel thread be running the
-thread in process context as well.
-
---- a/drivers/net/wireless/b43/main.c
-+++ b/drivers/net/wireless/b43/main.c
-@@ -4243,8 +4243,13 @@ redo:
- if (b43_bus_host_is_sdio(dev->dev)) {
- b43_sdio_free_irq(dev);
- } else {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ compat_synchronize_threaded_irq(&dev->irq_compat);
-+ compat_free_threaded_irq(&dev->irq_compat);
-+#else
- synchronize_irq(dev->dev->irq);
- free_irq(dev->dev->irq, dev);
-+#endif
- }
- mutex_lock(&wl->mutex);
- dev = wl->current_dev;
-@@ -4290,9 +4295,17 @@ static int b43_wireless_core_start(struc
- goto out;
- }
- } else {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ err = compat_request_threaded_irq(&dev->irq_compat,
-+ dev->dev->irq,
-+ b43_interrupt_handler,
-+ b43_interrupt_thread_handler,
-+ IRQF_SHARED, KBUILD_MODNAME, dev);
-+#else
- err = request_threaded_irq(dev->dev->irq, b43_interrupt_handler,
- b43_interrupt_thread_handler,
- IRQF_SHARED, KBUILD_MODNAME, dev);
-+#endif
- if (err) {
- b43err(dev->wl, "Cannot request IRQ-%d\n",
- dev->dev->irq);
-@@ -5115,6 +5128,10 @@ static int b43_setup_bands(struct b43_wl
-
- static void b43_wireless_core_detach(struct b43_wldev *dev)
- {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ if (dev->dev->sdev->bus->bustype != SSB_BUSTYPE_SDIO)
-+ compat_destroy_threaded_irq(&dev->irq_compat);
-+#endif
- /* We release firmware that late to not be required to re-request
- * is all the time when we reinit the core. */
- b43_release_firmware(dev);
---- a/drivers/net/wireless/b43/b43.h
-+++ b/drivers/net/wireless/b43/b43.h
-@@ -872,6 +872,9 @@ struct b43_wldev {
- unsigned int tx_count;
- unsigned int rx_count;
- #endif
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ struct compat_threaded_irq irq_compat;
-+#endif
- };
-
- /* Data structure for the WLAN parts (802.11 cores) of the b43 chip. */
---- a/drivers/net/wireless/iwlwifi/pcie/internal.h
-+++ b/drivers/net/wireless/iwlwifi/pcie/internal.h
-@@ -311,6 +311,9 @@ struct iwl_trans_pcie {
-
- /*protect hw register */
- spinlock_t reg_lock;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ struct compat_threaded_irq irq_compat;
-+#endif
- };
-
- /**
---- a/drivers/net/wireless/iwlwifi/pcie/trans.c
-+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
-@@ -773,12 +773,21 @@ void iwl_trans_pcie_free(struct iwl_tran
- {
- struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ compat_synchronize_threaded_irq(&trans_pcie->irq_compat);
-+#else
- synchronize_irq(trans_pcie->pci_dev->irq);
-+#endif
-
- iwl_pcie_tx_free(trans);
- iwl_pcie_rx_free(trans);
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ compat_free_threaded_irq(&trans_pcie->irq_compat);
-+ compat_destroy_threaded_irq(&trans_pcie->irq_compat);
-+#else
- free_irq(trans_pcie->pci_dev->irq, trans);
-+#endif
- iwl_pcie_free_ict(trans);
-
- pci_disable_msi(trans_pcie->pci_dev);
-@@ -1566,9 +1575,16 @@ struct iwl_trans *iwl_trans_pcie_alloc(s
- if (iwl_pcie_alloc_ict(trans))
- goto out_free_cmd_pool;
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ if (compat_request_threaded_irq(&trans_pcie->irq_compat,
-+ pdev->irq, iwl_pcie_isr_ict,
-+ iwl_pcie_irq_handler,
-+ IRQF_SHARED, DRV_NAME, trans)) {
-+#else
- if (request_threaded_irq(pdev->irq, iwl_pcie_isr_ict,
- iwl_pcie_irq_handler,
- IRQF_SHARED, DRV_NAME, trans)) {
-+#endif
- IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq);
- goto out_free_ict;
- }
---- a/drivers/net/wireless/ti/wlcore/main.c
-+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -6054,13 +6054,24 @@ static void wlcore_nvs_cb(const struct f
- wl->platform_quirks = pdata->platform_quirks;
- wl->if_ops = pdev_data->if_ops;
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
-+ irqflags = IRQF_TRIGGER_RISING;
-+#else
- if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ)
- irqflags = IRQF_TRIGGER_RISING;
- else
- irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT;
-+#endif
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ ret = compat_request_threaded_irq(&wl->irq_compat, wl->irq,
-+ NULL, wlcore_irq,
-+ irqflags,
-+ pdev->name, wl);
-+#else
- ret = request_threaded_irq(wl->irq, NULL, wlcore_irq,
- irqflags, pdev->name, wl);
-+#endif
- if (ret < 0) {
- wl1271_error("request_irq() failed: %d", ret);
- goto out_free_nvs;
-@@ -6135,7 +6146,11 @@ out_unreg:
- wl1271_unregister_hw(wl);
-
- out_irq:
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ compat_free_threaded_irq(&wl->irq_compat);
-+#else
- free_irq(wl->irq, wl);
-+#endif
-
- out_free_nvs:
- kfree(wl->nvs);
-@@ -6181,7 +6196,12 @@ int wlcore_remove(struct platform_device
- disable_irq_wake(wl->irq);
- }
- wl1271_unregister_hw(wl);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ compat_free_threaded_irq(&wl->irq_compat);
-+ compat_destroy_threaded_irq(&wl->irq_compat);
-+#else
- free_irq(wl->irq, wl);
-+#endif
- wlcore_free_hw(wl);
-
- return 0;
---- a/drivers/net/wireless/ti/wlcore/wlcore.h
-+++ b/drivers/net/wireless/ti/wlcore/wlcore.h
-@@ -175,7 +175,9 @@ struct wl1271 {
- bool initialized;
- struct ieee80211_hw *hw;
- bool mac80211_registered;
--
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
-+ struct compat_threaded_irq irq_compat;
-+#endif
- struct device *dev;
- struct platform_device *pdev;
-
diff --git a/patches/collateral-evolutions/network/09-threaded-irq/INFO b/patches/collateral-evolutions/network/09-threaded-irq/INFO
new file mode 100644
index 00000000..3da69ef9
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-threaded-irq/INFO
@@ -0,0 +1,6 @@
+The 2.6.31 kernel has threaded IRQ support and b43 is the first
+wireless driver that makes use of it. To support threaded IRSs
+on older kernels we built our own struct compat_threaded_irq
+to queue_work() onto it as the kernel thread be running the
+thread in process context as well.
+
diff --git a/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_b43.h b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_b43.h
new file mode 100644
index 00000000..a4e66cad
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_b43.h
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/b43/b43.h
++++ b/drivers/net/wireless/b43/b43.h
+@@ -872,6 +872,9 @@
+ unsigned int tx_count;
+ unsigned int rx_count;
+ #endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ struct compat_threaded_irq irq_compat;
++#endif
+ };
+
+ /* Data structure for the WLAN parts (802.11 cores) of the b43 chip. */
diff --git a/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_main.c b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_main.c
new file mode 100644
index 00000000..16a638fd
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_b43_main.c
@@ -0,0 +1,45 @@
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -4243,8 +4243,13 @@
+ if (b43_bus_host_is_sdio(dev->dev)) {
+ b43_sdio_free_irq(dev);
+ } else {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ compat_synchronize_threaded_irq(&dev->irq_compat);
++ compat_free_threaded_irq(&dev->irq_compat);
++#else
+ synchronize_irq(dev->dev->irq);
+ free_irq(dev->dev->irq, dev);
++#endif
+ }
+ mutex_lock(&wl->mutex);
+ dev = wl->current_dev;
+@@ -4290,9 +4295,17 @@
+ goto out;
+ }
+ } else {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ err = compat_request_threaded_irq(&dev->irq_compat,
++ dev->dev->irq,
++ b43_interrupt_handler,
++ b43_interrupt_thread_handler,
++ IRQF_SHARED, KBUILD_MODNAME, dev);
++#else
+ err = request_threaded_irq(dev->dev->irq, b43_interrupt_handler,
+ b43_interrupt_thread_handler,
+ IRQF_SHARED, KBUILD_MODNAME, dev);
++#endif
+ if (err) {
+ b43err(dev->wl, "Cannot request IRQ-%d\n",
+ dev->dev->irq);
+@@ -5115,6 +5128,10 @@
+
+ static void b43_wireless_core_detach(struct b43_wldev *dev)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ if (dev->dev->sdev->bus->bustype != SSB_BUSTYPE_SDIO)
++ compat_destroy_threaded_irq(&dev->irq_compat);
++#endif
+ /* We release firmware that late to not be required to re-request
+ * is all the time when we reinit the core. */
+ b43_release_firmware(dev);
diff --git a/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_internal.h b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_internal.h
new file mode 100644
index 00000000..a89d0d50
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_internal.h
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/iwlwifi/pcie/internal.h
++++ b/drivers/net/wireless/iwlwifi/pcie/internal.h
+@@ -311,6 +311,9 @@
+
+ /*protect hw register */
+ spinlock_t reg_lock;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ struct compat_threaded_irq irq_compat;
++#endif
+ };
+
+ /**
diff --git a/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_trans.c b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_trans.c
new file mode 100644
index 00000000..600ebd66
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_iwlwifi_pcie_trans.c
@@ -0,0 +1,41 @@
+--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
++++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
+@@ -773,12 +773,21 @@
+ {
+ struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ compat_synchronize_threaded_irq(&trans_pcie->irq_compat);
++#else
+ synchronize_irq(trans_pcie->pci_dev->irq);
++#endif
+
+ iwl_pcie_tx_free(trans);
+ iwl_pcie_rx_free(trans);
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ compat_free_threaded_irq(&trans_pcie->irq_compat);
++ compat_destroy_threaded_irq(&trans_pcie->irq_compat);
++#else
+ free_irq(trans_pcie->pci_dev->irq, trans);
++#endif
+ iwl_pcie_free_ict(trans);
+
+ pci_disable_msi(trans_pcie->pci_dev);
+@@ -1566,9 +1575,16 @@
+ if (iwl_pcie_alloc_ict(trans))
+ goto out_free_cmd_pool;
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ if (compat_request_threaded_irq(&trans_pcie->irq_compat,
++ pdev->irq, iwl_pcie_isr_ict,
++ iwl_pcie_irq_handler,
++ IRQF_SHARED, DRV_NAME, trans)) {
++#else
+ if (request_threaded_irq(pdev->irq, iwl_pcie_isr_ict,
+ iwl_pcie_irq_handler,
+ IRQF_SHARED, DRV_NAME, trans)) {
++#endif
+ IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq);
+ goto out_free_ict;
+ }
diff --git a/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_main.c b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_main.c
new file mode 100644
index 00000000..f04c7d02
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_main.c
@@ -0,0 +1,52 @@
+--- a/drivers/net/wireless/ti/wlcore/main.c
++++ b/drivers/net/wireless/ti/wlcore/main.c
+@@ -6054,13 +6054,24 @@
+ wl->platform_quirks = pdata->platform_quirks;
+ wl->if_ops = pdev_data->if_ops;
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
++ irqflags = IRQF_TRIGGER_RISING;
++#else
+ if (wl->platform_quirks & WL12XX_PLATFORM_QUIRK_EDGE_IRQ)
+ irqflags = IRQF_TRIGGER_RISING;
+ else
+ irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT;
++#endif
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ ret = compat_request_threaded_irq(&wl->irq_compat, wl->irq,
++ NULL, wlcore_irq,
++ irqflags,
++ pdev->name, wl);
++#else
+ ret = request_threaded_irq(wl->irq, NULL, wlcore_irq,
+ irqflags, pdev->name, wl);
++#endif
+ if (ret < 0) {
+ wl1271_error("request_irq() failed: %d", ret);
+ goto out_free_nvs;
+@@ -6135,7 +6146,11 @@
+ wl1271_unregister_hw(wl);
+
+ out_irq:
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ compat_free_threaded_irq(&wl->irq_compat);
++#else
+ free_irq(wl->irq, wl);
++#endif
+
+ out_free_nvs:
+ kfree(wl->nvs);
+@@ -6181,7 +6196,12 @@
+ disable_irq_wake(wl->irq);
+ }
+ wl1271_unregister_hw(wl);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ compat_free_threaded_irq(&wl->irq_compat);
++ compat_destroy_threaded_irq(&wl->irq_compat);
++#else
+ free_irq(wl->irq, wl);
++#endif
+ wlcore_free_hw(wl);
+
+ return 0;
diff --git a/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_wlcore.h b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_wlcore.h
new file mode 100644
index 00000000..1731cf70
--- /dev/null
+++ b/patches/collateral-evolutions/network/09-threaded-irq/drivers_net_wireless_ti_wlcore_wlcore.h
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ti/wlcore/wlcore.h
++++ b/drivers/net/wireless/ti/wlcore/wlcore.h
+@@ -175,7 +175,9 @@
+ bool initialized;
+ struct ieee80211_hw *hw;
+ bool mac80211_registered;
+-
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
++ struct compat_threaded_irq irq_compat;
++#endif
+ struct device *dev;
+ struct platform_device *pdev;
+
diff --git a/patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev/INFO b/patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev/INFO
new file mode 100644
index 00000000..76149d78
--- /dev/null
+++ b/patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev/INFO
@@ -0,0 +1,18 @@
+The patch "wext: refactor" by Johannes Berg refactored
+wext code so that new kernels no longer get the wext
+handlers through struct netdevice, instead they get
+it through the struct wiphy which is cfg80211 specific.
+
+For old kernels this means you get not wext handlers
+anymore when backporting code, this adds the wext handler
+back to the netdevice wireless_handlers to let compat
+users use wext again.
+
+We do this for every kernel version because the struct wiphy
+is changing from kernel version to version. At least the
+struct from kernel 2.6.33 and 2.6.34 are incompatible and
+the kernel would dereference some wrong type in the struct
+and oops. The old interface is not affected by this. This
+will cause that CONFIG_CFG80211_WEXT still depends on
+CONFIG_WIRELESS_EXT in compat-drivers.
+
diff --git a/patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev.patch b/patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev/net_wireless_core.c
index 2e2aca0c..916c5956 100644
--- a/patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev.patch
+++ b/patches/collateral-evolutions/network/10-add-wext-handlers-to-netdev/net_wireless_core.c
@@ -1,24 +1,6 @@
-The patch "wext: refactor" by Johannes Berg refactored
-wext code so that new kernels no longer get the wext
-handlers through struct netdevice, instead they get
-it through the struct wiphy which is cfg80211 specific.
-
-For old kernels this means you get not wext handlers
-anymore when backporting code, this adds the wext handler
-back to the netdevice wireless_handlers to let compat
-users use wext again.
-
-We do this for every kernel version because the struct wiphy
-is changing from kernel version to version. At least the
-struct from kernel 2.6.33 and 2.6.34 are incompatible and
-the kernel would dereference some wrong type in the struct
-and oops. The old interface is not affected by this. This
-will cause that CONFIG_CFG80211_WEXT still depends on
-CONFIG_WIRELESS_EXT in compat-drivers.
-
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -373,10 +373,6 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -373,10 +373,6 @@
INIT_WORK(&rdev->sched_scan_results_wk, __cfg80211_sched_scan_results);
INIT_DELAYED_WORK(&rdev->dfs_update_channels_wk,
cfg80211_dfs_channels_update_work);
@@ -29,7 +11,7 @@ CONFIG_WIRELESS_EXT in compat-drivers.
device_initialize(&rdev->wiphy.dev);
rdev->wiphy.dev.class = &ieee80211_class;
rdev->wiphy.dev.platform_data = rdev;
-@@ -947,6 +943,15 @@ static int cfg80211_netdev_notifier_call
+@@ -947,6 +943,15 @@
wdev->sme_state = CFG80211_SME_IDLE;
mutex_unlock(&rdev->devlist_mtx);
#ifdef CONFIG_CFG80211_WEXT
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops.patch b/patches/collateral-evolutions/network/11-dev-pm-ops.patch
deleted file mode 100644
index 4d9ae952..00000000
--- a/patches/collateral-evolutions/network/11-dev-pm-ops.patch
+++ /dev/null
@@ -1,379 +0,0 @@
-The 2.6.29 kernel has new struct dev_pm_ops [1] which are used
-on the pci device to distinguish power management hooks for suspend
-to RAM and hibernation. Older kernels don't have these so we need
-to resort back to the good ol' suspend/resume. Fortunately the calls
-are not so different so it should be possible to resuse the same
-calls on compat code with only slight modifications.
-
-[1] http://lxr.linux.no/#linux+v2.6.29/include/linux/pm.h#L170
-
---- a/drivers/bcma/host_pci.c
-+++ b/drivers/bcma/host_pci.c
-@@ -257,6 +257,9 @@ static int bcma_host_pci_resume(struct d
- return bcma_bus_resume(bus);
- }
-
-+compat_pci_suspend(bcma_host_pci_suspend)
-+compat_pci_resume(bcma_host_pci_resume)
-+
- static SIMPLE_DEV_PM_OPS(bcma_pm_ops, bcma_host_pci_suspend,
- bcma_host_pci_resume);
- #define BCMA_PM_OPS (&bcma_pm_ops)
-@@ -285,7 +288,12 @@ static struct pci_driver bcma_pci_bridge
- .id_table = bcma_pci_bridge_tbl,
- .probe = bcma_host_pci_probe,
- .remove = bcma_host_pci_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = BCMA_PM_OPS,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = bcma_host_pci_suspend_compat,
-+ .resume = bcma_host_pci_resume_compat,
-+#endif
- };
-
- int __init bcma_host_pci_init(void)
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2743,6 +2743,9 @@ static const struct pci_error_handlers a
- .resume = atl1c_io_resume,
- };
-
-+compat_pci_suspend(atl1c_suspend)
-+compat_pci_resume(atl1c_resume)
-+
- static SIMPLE_DEV_PM_OPS(atl1c_pm_ops, atl1c_suspend, atl1c_resume);
-
- static struct pci_driver atl1c_driver = {
-@@ -2752,7 +2755,12 @@ static struct pci_driver atl1c_driver =
- .remove = atl1c_remove,
- .shutdown = atl1c_shutdown,
- .err_handler = &atl1c_err_handler,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = &atl1c_pm_ops,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = atl1c_suspend_compat,
-+ .resume = atl1c_resume_compat,
-+#endif
- };
-
- /**
---- a/drivers/net/ethernet/atheros/atlx/atl1.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
-@@ -2877,6 +2877,9 @@ static int atl1_resume(struct device *de
- return 0;
- }
-
-+compat_pci_suspend(atl1_suspend)
-+compat_pci_resume(atl1_resume)
-+
- static SIMPLE_DEV_PM_OPS(atl1_pm_ops, atl1_suspend, atl1_resume);
- #define ATL1_PM_OPS (&atl1_pm_ops)
-
-@@ -3147,7 +3150,12 @@ static struct pci_driver atl1_driver = {
- .probe = atl1_probe,
- .remove = atl1_remove,
- .shutdown = atl1_shutdown,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = ATL1_PM_OPS,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = atl1_suspend_compat,
-+ .resume = atl1_resume_compat,
-+#endif
- };
-
- /**
---- a/drivers/net/wireless/ath/ath5k/pci.c
-+++ b/drivers/net/wireless/ath/ath5k/pci.c
-@@ -326,6 +326,9 @@ static int ath5k_pci_resume(struct devic
- return 0;
- }
-
-+compat_pci_suspend(ath5k_pci_suspend)
-+compat_pci_resume(ath5k_pci_resume)
-+
- static SIMPLE_DEV_PM_OPS(ath5k_pm_ops, ath5k_pci_suspend, ath5k_pci_resume);
- #define ATH5K_PM_OPS (&ath5k_pm_ops)
- #else
-@@ -337,7 +340,12 @@ static struct pci_driver ath5k_pci_drive
- .id_table = ath5k_pci_id_table,
- .probe = ath5k_pci_probe,
- .remove = ath5k_pci_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = ATH5K_PM_OPS,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = ath5k_pci_suspend_compat,
-+ .resume = ath5k_pci_resume_compat,
-+#endif
- };
-
- module_pci_driver(ath5k_pci_driver);
---- a/drivers/net/wireless/ath/ath9k/pci.c
-+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -310,6 +310,9 @@ static int ath_pci_resume(struct device
- return 0;
- }
-
-+compat_pci_suspend(ath_pci_suspend);
-+compat_pci_resume(ath_pci_resume);
-+
- static SIMPLE_DEV_PM_OPS(ath9k_pm_ops, ath_pci_suspend, ath_pci_resume);
-
- #define ATH9K_PM_OPS (&ath9k_pm_ops)
-@@ -328,7 +331,12 @@ static struct pci_driver ath_pci_driver
- .id_table = ath_pci_id_table,
- .probe = ath_pci_probe,
- .remove = ath_pci_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = ATH9K_PM_OPS,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = ath_pci_suspend_compat,
-+ .resume = ath_pci_resume_compat,
-+#endif
- };
-
- int ath_pci_init(void)
---- a/drivers/net/wireless/iwlegacy/3945-mac.c
-+++ b/drivers/net/wireless/iwlegacy/3945-mac.c
-@@ -3909,7 +3909,12 @@ static struct pci_driver il3945_driver =
- .id_table = il3945_hw_card_ids,
- .probe = il3945_pci_probe,
- .remove = il3945_pci_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = IL_LEGACY_PM_OPS,
-+#elif defined(CONFIG_PM)
-+ .suspend = il_pci_suspend_compat,
-+ .resume = il_pci_resume_compat,
-+#endif
- };
-
- static int __init
---- a/drivers/net/wireless/iwlegacy/4965-mac.c
-+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
-@@ -6803,7 +6803,12 @@ static struct pci_driver il4965_driver =
- .id_table = il4965_hw_card_ids,
- .probe = il4965_pci_probe,
- .remove = il4965_pci_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = IL_LEGACY_PM_OPS,
-+#elif defined(CONFIG_PM)
-+ .suspend = il_pci_suspend_compat,
-+ .resume = il_pci_resume_compat,
-+#endif
- };
-
- static int __init
---- a/drivers/net/wireless/iwlegacy/common.c
-+++ b/drivers/net/wireless/iwlegacy/common.c
-@@ -4935,8 +4935,17 @@ il_pci_resume(struct device *device)
- return 0;
- }
-
-+compat_pci_suspend(il_pci_suspend)
-+compat_pci_resume(il_pci_resume)
-+
- SIMPLE_DEV_PM_OPS(il_pm_ops, il_pci_suspend, il_pci_resume);
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- EXPORT_SYMBOL(il_pm_ops);
-+#else
-+EXPORT_SYMBOL(il_pci_suspend_compat);
-+EXPORT_SYMBOL(il_pci_resume_compat);
-+#endif
-
- #endif /* CONFIG_PM_SLEEP */
-
---- a/drivers/net/wireless/iwlegacy/common.h
-+++ b/drivers/net/wireless/iwlegacy/common.h
-@@ -1833,7 +1833,14 @@ __le32 il_add_beacon_time(struct il_priv
- u32 beacon_interval);
-
- #ifdef CONFIG_PM
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
-+int il_pci_suspend_compat(struct pci_dev *pdev, pm_message_t state);
-+int il_pci_resume_compat(struct pci_dev *pdev);
-+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32))
-+extern struct dev_pm_ops il_pm_ops;
-+#else
- extern const struct dev_pm_ops il_pm_ops;
-+#endif
-
- #define IL_LEGACY_PM_OPS (&il_pm_ops)
-
---- a/drivers/net/wireless/iwlwifi/pcie/drv.c
-+++ b/drivers/net/wireless/iwlwifi/pcie/drv.c
-@@ -347,6 +347,9 @@ static int iwl_pci_resume(struct device
- return iwl_trans_resume(iwl_trans);
- }
-
-+compat_pci_suspend(iwl_pci_suspend)
-+compat_pci_resume(iwl_pci_resume)
-+
- static SIMPLE_DEV_PM_OPS(iwl_dev_pm_ops, iwl_pci_suspend, iwl_pci_resume);
-
- #define IWL_PM_OPS (&iwl_dev_pm_ops)
-@@ -362,7 +365,12 @@ static struct pci_driver iwl_pci_driver
- .id_table = iwl_hw_card_ids,
- .probe = iwl_pci_probe,
- .remove = iwl_pci_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = IWL_PM_OPS,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = iwl_pci_suspend_compat,
-+ .resume = iwl_pci_resume_compat,
-+#endif
- };
-
- int __must_check iwl_pci_register_driver(void)
---- a/drivers/net/wireless/libertas/if_spi.c
-+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -1249,6 +1249,7 @@ static int libertas_spi_remove(struct sp
- return 0;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- static int if_spi_suspend(struct device *dev)
- {
- struct spi_device *spi = to_spi_device(dev);
-@@ -1282,6 +1283,7 @@ static const struct dev_pm_ops if_spi_pm
- .suspend = if_spi_suspend,
- .resume = if_spi_resume,
- };
-+#endif
-
- static struct spi_driver libertas_spi_driver = {
- .probe = if_spi_probe,
-@@ -1289,7 +1291,9 @@ static struct spi_driver libertas_spi_dr
- .driver = {
- .name = "libertas_spi",
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .pm = &if_spi_pm_ops,
-+#endif
- },
- };
-
---- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-@@ -372,6 +372,9 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use
- MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
- MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
-
-+compat_pci_suspend(rtl_pci_suspend);
-+compat_pci_resume(rtl_pci_resume);
-+
- static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
-
- static struct pci_driver rtl92ce_driver = {
-@@ -379,7 +382,12 @@ static struct pci_driver rtl92ce_driver
- .id_table = rtl92ce_pci_ids,
- .probe = rtl_pci_probe,
- .remove = rtl_pci_disconnect,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = &rtlwifi_pm_ops,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = rtl_pci_suspend_compat,
-+ .resume = rtl_pci_resume_compat,
-+#endif
- };
-
- module_pci_driver(rtl92ce_driver);
---- a/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
-@@ -378,6 +378,9 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use
- MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
- MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
-
-+compat_pci_suspend(rtl_pci_suspend);
-+compat_pci_resume(rtl_pci_resume);
-+
- static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
-
- static struct pci_driver rtl92de_driver = {
-@@ -385,7 +388,12 @@ static struct pci_driver rtl92de_driver
- .id_table = rtl92de_pci_ids,
- .probe = rtl_pci_probe,
- .remove = rtl_pci_disconnect,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = &rtlwifi_pm_ops,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = rtl_pci_suspend_compat,
-+ .resume = rtl_pci_resume_compat,
-+#endif
- };
-
- /* add global spin lock to solve the problem that
---- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-@@ -429,6 +429,9 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use
- MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
- MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
-
-+compat_pci_suspend(rtl_pci_suspend);
-+compat_pci_resume(rtl_pci_resume);
-+
- static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
-
- static struct pci_driver rtl92se_driver = {
-@@ -436,7 +439,12 @@ static struct pci_driver rtl92se_driver
- .id_table = rtl92se_pci_ids,
- .probe = rtl_pci_probe,
- .remove = rtl_pci_disconnect,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = &rtlwifi_pm_ops,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = rtl_pci_suspend_compat,
-+ .resume = rtl_pci_resume_compat,
-+#endif
- };
-
- module_pci_driver(rtl92se_driver);
---- a/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
-@@ -367,6 +367,9 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use
- MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
- MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
-
-+compat_pci_suspend(rtl_pci_suspend);
-+compat_pci_resume(rtl_pci_resume);
-+
- static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
-
- static struct pci_driver rtl8723ae_driver = {
-@@ -374,7 +377,12 @@ static struct pci_driver rtl8723ae_drive
- .id_table = rtl8723ae_pci_ids,
- .probe = rtl_pci_probe,
- .remove = rtl_pci_disconnect,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = &rtlwifi_pm_ops,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = rtl_pci_suspend_compat,
-+ .resume = rtl_pci_resume_compat,
-+#endif
- };
-
- module_pci_driver(rtl8723ae_driver);
---- a/drivers/net/wireless/p54/p54pci.c
-+++ b/drivers/net/wireless/p54/p54pci.c
-@@ -684,6 +684,9 @@ static int p54p_resume(struct device *de
- return pci_set_power_state(pdev, PCI_D0);
- }
-
-+compat_pci_suspend(p54p_suspend);
-+compat_pci_resume(p54p_resume);
-+
- static SIMPLE_DEV_PM_OPS(p54pci_pm_ops, p54p_suspend, p54p_resume);
-
- #define P54P_PM_OPS (&p54pci_pm_ops)
-@@ -696,7 +699,12 @@ static struct pci_driver p54p_driver = {
- .id_table = p54p_table,
- .probe = p54p_probe,
- .remove = p54p_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
- .driver.pm = P54P_PM_OPS,
-+#elif defined(CONFIG_PM_SLEEP)
-+ .suspend = p54p_suspend_compat,
-+ .resume = p54p_resume_compat,
-+#endif
- };
-
- module_pci_driver(p54p_driver);
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/INFO b/patches/collateral-evolutions/network/11-dev-pm-ops/INFO
new file mode 100644
index 00000000..c8b4c91c
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/INFO
@@ -0,0 +1,9 @@
+The 2.6.29 kernel has new struct dev_pm_ops [1] which are used
+on the pci device to distinguish power management hooks for suspend
+to RAM and hibernation. Older kernels don't have these so we need
+to resort back to the good ol' suspend/resume. Fortunately the calls
+are not so different so it should be possible to resuse the same
+calls on compat code with only slight modifications.
+
+[1] http://lxr.linux.no/#linux+v2.6.29/include/linux/pm.h#L170
+
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_bcma_host_pci.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_bcma_host_pci.c
new file mode 100644
index 00000000..3ad0153d
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_bcma_host_pci.c
@@ -0,0 +1,25 @@
+--- a/drivers/bcma/host_pci.c
++++ b/drivers/bcma/host_pci.c
+@@ -257,6 +257,9 @@
+ return bcma_bus_resume(bus);
+ }
+
++compat_pci_suspend(bcma_host_pci_suspend)
++compat_pci_resume(bcma_host_pci_resume)
++
+ static SIMPLE_DEV_PM_OPS(bcma_pm_ops, bcma_host_pci_suspend,
+ bcma_host_pci_resume);
+ #define BCMA_PM_OPS (&bcma_pm_ops)
+@@ -285,7 +288,12 @@
+ .id_table = bcma_pci_bridge_tbl,
+ .probe = bcma_host_pci_probe,
+ .remove = bcma_host_pci_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = BCMA_PM_OPS,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = bcma_host_pci_suspend_compat,
++ .resume = bcma_host_pci_resume_compat,
++#endif
+ };
+
+ int __init bcma_host_pci_init(void)
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
new file mode 100644
index 00000000..70753ec2
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+@@ -2743,6 +2743,9 @@
+ .resume = atl1c_io_resume,
+ };
+
++compat_pci_suspend(atl1c_suspend)
++compat_pci_resume(atl1c_resume)
++
+ static SIMPLE_DEV_PM_OPS(atl1c_pm_ops, atl1c_suspend, atl1c_resume);
+
+ static struct pci_driver atl1c_driver = {
+@@ -2752,7 +2755,12 @@
+ .remove = atl1c_remove,
+ .shutdown = atl1c_shutdown,
+ .err_handler = &atl1c_err_handler,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = &atl1c_pm_ops,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = atl1c_suspend_compat,
++ .resume = atl1c_resume_compat,
++#endif
+ };
+
+ /**
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atlx_atl1.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atlx_atl1.c
new file mode 100644
index 00000000..5886923c
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_ethernet_atheros_atlx_atl1.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/ethernet/atheros/atlx/atl1.c
++++ b/drivers/net/ethernet/atheros/atlx/atl1.c
+@@ -2877,6 +2877,9 @@
+ return 0;
+ }
+
++compat_pci_suspend(atl1_suspend)
++compat_pci_resume(atl1_resume)
++
+ static SIMPLE_DEV_PM_OPS(atl1_pm_ops, atl1_suspend, atl1_resume);
+ #define ATL1_PM_OPS (&atl1_pm_ops)
+
+@@ -3147,7 +3150,12 @@
+ .probe = atl1_probe,
+ .remove = atl1_remove,
+ .shutdown = atl1_shutdown,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = ATL1_PM_OPS,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = atl1_suspend_compat,
++ .resume = atl1_resume_compat,
++#endif
+ };
+
+ /**
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath5k_pci.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath5k_pci.c
new file mode 100644
index 00000000..860a02ac
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath5k_pci.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/ath/ath5k/pci.c
++++ b/drivers/net/wireless/ath/ath5k/pci.c
+@@ -326,6 +326,9 @@
+ return 0;
+ }
+
++compat_pci_suspend(ath5k_pci_suspend)
++compat_pci_resume(ath5k_pci_resume)
++
+ static SIMPLE_DEV_PM_OPS(ath5k_pm_ops, ath5k_pci_suspend, ath5k_pci_resume);
+ #define ATH5K_PM_OPS (&ath5k_pm_ops)
+ #else
+@@ -337,7 +340,12 @@
+ .id_table = ath5k_pci_id_table,
+ .probe = ath5k_pci_probe,
+ .remove = ath5k_pci_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = ATH5K_PM_OPS,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = ath5k_pci_suspend_compat,
++ .resume = ath5k_pci_resume_compat,
++#endif
+ };
+
+ module_pci_driver(ath5k_pci_driver);
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath9k_pci.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath9k_pci.c
new file mode 100644
index 00000000..16107a15
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_ath_ath9k_pci.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/ath/ath9k/pci.c
++++ b/drivers/net/wireless/ath/ath9k/pci.c
+@@ -310,6 +310,9 @@
+ return 0;
+ }
+
++compat_pci_suspend(ath_pci_suspend);
++compat_pci_resume(ath_pci_resume);
++
+ static SIMPLE_DEV_PM_OPS(ath9k_pm_ops, ath_pci_suspend, ath_pci_resume);
+
+ #define ATH9K_PM_OPS (&ath9k_pm_ops)
+@@ -328,7 +331,12 @@
+ .id_table = ath_pci_id_table,
+ .probe = ath_pci_probe,
+ .remove = ath_pci_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = ATH9K_PM_OPS,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = ath_pci_suspend_compat,
++ .resume = ath_pci_resume_compat,
++#endif
+ };
+
+ int ath_pci_init(void)
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_3945-mac.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_3945-mac.c
new file mode 100644
index 00000000..973d06b3
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_3945-mac.c
@@ -0,0 +1,15 @@
+--- a/drivers/net/wireless/iwlegacy/3945-mac.c
++++ b/drivers/net/wireless/iwlegacy/3945-mac.c
+@@ -3909,7 +3909,12 @@
+ .id_table = il3945_hw_card_ids,
+ .probe = il3945_pci_probe,
+ .remove = il3945_pci_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = IL_LEGACY_PM_OPS,
++#elif defined(CONFIG_PM)
++ .suspend = il_pci_suspend_compat,
++ .resume = il_pci_resume_compat,
++#endif
+ };
+
+ static int __init
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_4965-mac.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_4965-mac.c
new file mode 100644
index 00000000..776b8a54
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_4965-mac.c
@@ -0,0 +1,15 @@
+--- a/drivers/net/wireless/iwlegacy/4965-mac.c
++++ b/drivers/net/wireless/iwlegacy/4965-mac.c
+@@ -6803,7 +6803,12 @@
+ .id_table = il4965_hw_card_ids,
+ .probe = il4965_pci_probe,
+ .remove = il4965_pci_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = IL_LEGACY_PM_OPS,
++#elif defined(CONFIG_PM)
++ .suspend = il_pci_suspend_compat,
++ .resume = il_pci_resume_compat,
++#endif
+ };
+
+ static int __init
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.c
new file mode 100644
index 00000000..70af6aa0
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.c
@@ -0,0 +1,20 @@
+--- a/drivers/net/wireless/iwlegacy/common.c
++++ b/drivers/net/wireless/iwlegacy/common.c
+@@ -4935,8 +4935,17 @@
+ return 0;
+ }
+
++compat_pci_suspend(il_pci_suspend)
++compat_pci_resume(il_pci_resume)
++
+ SIMPLE_DEV_PM_OPS(il_pm_ops, il_pci_suspend, il_pci_resume);
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ EXPORT_SYMBOL(il_pm_ops);
++#else
++EXPORT_SYMBOL(il_pci_suspend_compat);
++EXPORT_SYMBOL(il_pci_resume_compat);
++#endif
+
+ #endif /* CONFIG_PM_SLEEP */
+
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.h b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.h
new file mode 100644
index 00000000..e81cc7cd
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlegacy_common.h
@@ -0,0 +1,17 @@
+--- a/drivers/net/wireless/iwlegacy/common.h
++++ b/drivers/net/wireless/iwlegacy/common.h
+@@ -1833,7 +1833,14 @@
+ u32 beacon_interval);
+
+ #ifdef CONFIG_PM
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29))
++int il_pci_suspend_compat(struct pci_dev *pdev, pm_message_t state);
++int il_pci_resume_compat(struct pci_dev *pdev);
++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32))
++extern struct dev_pm_ops il_pm_ops;
++#else
+ extern const struct dev_pm_ops il_pm_ops;
++#endif
+
+ #define IL_LEGACY_PM_OPS (&il_pm_ops)
+
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlwifi_pcie_drv.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlwifi_pcie_drv.c
new file mode 100644
index 00000000..4c2a2742
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_iwlwifi_pcie_drv.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/iwlwifi/pcie/drv.c
+@@ -347,6 +347,9 @@
+ return iwl_trans_resume(iwl_trans);
+ }
+
++compat_pci_suspend(iwl_pci_suspend)
++compat_pci_resume(iwl_pci_resume)
++
+ static SIMPLE_DEV_PM_OPS(iwl_dev_pm_ops, iwl_pci_suspend, iwl_pci_resume);
+
+ #define IWL_PM_OPS (&iwl_dev_pm_ops)
+@@ -362,7 +365,12 @@
+ .id_table = iwl_hw_card_ids,
+ .probe = iwl_pci_probe,
+ .remove = iwl_pci_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = IWL_PM_OPS,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = iwl_pci_suspend_compat,
++ .resume = iwl_pci_resume_compat,
++#endif
+ };
+
+ int __must_check iwl_pci_register_driver(void)
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_libertas_if_spi.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_libertas_if_spi.c
new file mode 100644
index 00000000..7f6312c4
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_libertas_if_spi.c
@@ -0,0 +1,28 @@
+--- a/drivers/net/wireless/libertas/if_spi.c
++++ b/drivers/net/wireless/libertas/if_spi.c
+@@ -1249,6 +1249,7 @@
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ static int if_spi_suspend(struct device *dev)
+ {
+ struct spi_device *spi = to_spi_device(dev);
+@@ -1282,6 +1283,7 @@
+ .suspend = if_spi_suspend,
+ .resume = if_spi_resume,
+ };
++#endif
+
+ static struct spi_driver libertas_spi_driver = {
+ .probe = if_spi_probe,
+@@ -1289,7 +1291,9 @@
+ .driver = {
+ .name = "libertas_spi",
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .pm = &if_spi_pm_ops,
++#endif
+ },
+ };
+
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_p54_p54pci.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_p54_p54pci.c
new file mode 100644
index 00000000..833de297
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_p54_p54pci.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/p54/p54pci.c
++++ b/drivers/net/wireless/p54/p54pci.c
+@@ -684,6 +684,9 @@
+ return pci_set_power_state(pdev, PCI_D0);
+ }
+
++compat_pci_suspend(p54p_suspend);
++compat_pci_resume(p54p_resume);
++
+ static SIMPLE_DEV_PM_OPS(p54pci_pm_ops, p54p_suspend, p54p_resume);
+
+ #define P54P_PM_OPS (&p54pci_pm_ops)
+@@ -696,7 +699,12 @@
+ .id_table = p54p_table,
+ .probe = p54p_probe,
+ .remove = p54p_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = P54P_PM_OPS,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = p54p_suspend_compat,
++ .resume = p54p_resume_compat,
++#endif
+ };
+
+ module_pci_driver(p54p_driver);
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192ce_sw.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192ce_sw.c
new file mode 100644
index 00000000..e03a4b1d
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192ce_sw.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
+@@ -372,6 +372,9 @@
+ MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
+ MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
+
++compat_pci_suspend(rtl_pci_suspend);
++compat_pci_resume(rtl_pci_resume);
++
+ static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
+
+ static struct pci_driver rtl92ce_driver = {
+@@ -379,7 +382,12 @@
+ .id_table = rtl92ce_pci_ids,
+ .probe = rtl_pci_probe,
+ .remove = rtl_pci_disconnect,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = &rtlwifi_pm_ops,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = rtl_pci_suspend_compat,
++ .resume = rtl_pci_resume_compat,
++#endif
+ };
+
+ module_pci_driver(rtl92ce_driver);
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192de_sw.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192de_sw.c
new file mode 100644
index 00000000..071398d0
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192de_sw.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
+@@ -378,6 +378,9 @@
+ MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
+ MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
+
++compat_pci_suspend(rtl_pci_suspend);
++compat_pci_resume(rtl_pci_resume);
++
+ static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
+
+ static struct pci_driver rtl92de_driver = {
+@@ -385,7 +388,12 @@
+ .id_table = rtl92de_pci_ids,
+ .probe = rtl_pci_probe,
+ .remove = rtl_pci_disconnect,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = &rtlwifi_pm_ops,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = rtl_pci_suspend_compat,
++ .resume = rtl_pci_resume_compat,
++#endif
+ };
+
+ /* add global spin lock to solve the problem that
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192se_sw.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192se_sw.c
new file mode 100644
index 00000000..acb2ff1e
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8192se_sw.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+@@ -429,6 +429,9 @@
+ MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
+ MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
+
++compat_pci_suspend(rtl_pci_suspend);
++compat_pci_resume(rtl_pci_resume);
++
+ static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
+
+ static struct pci_driver rtl92se_driver = {
+@@ -436,7 +439,12 @@
+ .id_table = rtl92se_pci_ids,
+ .probe = rtl_pci_probe,
+ .remove = rtl_pci_disconnect,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = &rtlwifi_pm_ops,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = rtl_pci_suspend_compat,
++ .resume = rtl_pci_resume_compat,
++#endif
+ };
+
+ module_pci_driver(rtl92se_driver);
diff --git a/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8723ae_sw.c b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8723ae_sw.c
new file mode 100644
index 00000000..0fc2fe2b
--- /dev/null
+++ b/patches/collateral-evolutions/network/11-dev-pm-ops/drivers_net_wireless_rtlwifi_rtl8723ae_sw.c
@@ -0,0 +1,25 @@
+--- a/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8723ae/sw.c
+@@ -367,6 +367,9 @@
+ MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
+ MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
+
++compat_pci_suspend(rtl_pci_suspend);
++compat_pci_resume(rtl_pci_resume);
++
+ static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
+
+ static struct pci_driver rtl8723ae_driver = {
+@@ -374,7 +377,12 @@
+ .id_table = rtl8723ae_pci_ids,
+ .probe = rtl_pci_probe,
+ .remove = rtl_pci_disconnect,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29))
+ .driver.pm = &rtlwifi_pm_ops,
++#elif defined(CONFIG_PM_SLEEP)
++ .suspend = rtl_pci_suspend_compat,
++ .resume = rtl_pci_resume_compat,
++#endif
+ };
+
+ module_pci_driver(rtl8723ae_driver);
diff --git a/patches/collateral-evolutions/network/12-iw_handler-changes.patch b/patches/collateral-evolutions/network/12-iw_handler-changes/drivers_net_wireless_ipw2x00_ipw2100.c
index d7a6a6dd..b5622e3a 100644
--- a/patches/collateral-evolutions/network/12-iw_handler-changes.patch
+++ b/patches/collateral-evolutions/network/12-iw_handler-changes/drivers_net_wireless_ipw2x00_ipw2100.c
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -6089,7 +6089,11 @@ static struct net_device *ipw2100_alloc_
+@@ -6089,7 +6089,11 @@
netdev_attach_ops(dev, &ipw2100_netdev_ops);
dev->ethtool_ops = &ipw2100_ethtool_ops;
dev->wireless_handlers = &ipw2100_wx_handler_def;
diff --git a/patches/collateral-evolutions/network/12-mac80211-disable-tx-status/INFO b/patches/collateral-evolutions/network/12-mac80211-disable-tx-status/INFO
new file mode 100644
index 00000000..760ed440
--- /dev/null
+++ b/patches/collateral-evolutions/network/12-mac80211-disable-tx-status/INFO
@@ -0,0 +1,6 @@
+We can't possibly backport the wifi TX status since
+skb_shinfo()->tx_flags used to be a union and there
+is no way to make the & work properly in that case.
+So we need to just ifdef this part out.
+
+
diff --git a/patches/collateral-evolutions/network/12-mac80211-disable-tx-status.patch b/patches/collateral-evolutions/network/12-mac80211-disable-tx-status/net_mac80211_tx.c
index 3d497dfd..f5aeb836 100644
--- a/patches/collateral-evolutions/network/12-mac80211-disable-tx-status.patch
+++ b/patches/collateral-evolutions/network/12-mac80211-disable-tx-status/net_mac80211_tx.c
@@ -1,12 +1,6 @@
-We can't possibly backport the wifi TX status since
-skb_shinfo()->tx_flags used to be a union and there
-is no way to make the & work properly in that case.
-So we need to just ifdef this part out.
-
-
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -2035,6 +2035,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -2035,6 +2035,7 @@
goto fail_rcu;
}
@@ -14,7 +8,7 @@ So we need to just ifdef this part out.
if (unlikely(!multicast && skb->sk &&
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)) {
struct sk_buff *orig_skb = skb;
-@@ -2063,6 +2064,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -2063,6 +2064,7 @@
skb = orig_skb;
}
}
diff --git a/patches/collateral-evolutions/network/14-device-type.patch b/patches/collateral-evolutions/network/14-device-type.patch
deleted file mode 100644
index b5163991..00000000
--- a/patches/collateral-evolutions/network/14-device-type.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Kernels >= 2.6.32 can identify the type of device netdevice
-so that sysfs can be used to get this. We never really had a
-systematic way of doing this -- now we do through the
-SET_NETDEV_DEVTYPE() macro. For older kernels we make the
-SET_NETDEV_DEVTYPE() be a no-op this means the wireless type
-we define is unused so we ucomment it simply to avoid a
-compile warning.
-
---- a/net/wireless/core.c
-+++ b/net/wireless/core.c
-@@ -839,9 +839,11 @@ void cfg80211_unregister_wdev(struct wir
- }
- EXPORT_SYMBOL(cfg80211_unregister_wdev);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
- static struct device_type wiphy_type = {
- .name = "wlan",
- };
-+#endif
-
- void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev,
- enum nl80211_iftype iftype, int num)
---- a/net/bluetooth/bnep/core.c
-+++ b/net/bluetooth/bnep/core.c
-@@ -526,9 +526,11 @@ static struct device *bnep_get_device(st
- return conn ? &conn->dev : NULL;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
- static struct device_type bnep_type = {
- .name = "bluetooth",
- };
-+#endif
-
- int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
- {
---- a/drivers/net/usb/usbnet.c
-+++ b/drivers/net/usb/usbnet.c
-@@ -1363,13 +1363,17 @@ static const struct net_device_ops usbne
-
- // precondition: never called in_interrupt
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
- static struct device_type wlan_type = {
- .name = "wlan",
- };
-+#endif
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
- static struct device_type wwan_type = {
- .name = "wwan",
- };
-+#endif
-
- int
- usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
diff --git a/patches/collateral-evolutions/network/14-device-type/INFO b/patches/collateral-evolutions/network/14-device-type/INFO
new file mode 100644
index 00000000..68698578
--- /dev/null
+++ b/patches/collateral-evolutions/network/14-device-type/INFO
@@ -0,0 +1,8 @@
+Kernels >= 2.6.32 can identify the type of device netdevice
+so that sysfs can be used to get this. We never really had a
+systematic way of doing this -- now we do through the
+SET_NETDEV_DEVTYPE() macro. For older kernels we make the
+SET_NETDEV_DEVTYPE() be a no-op this means the wireless type
+we define is unused so we ucomment it simply to avoid a
+compile warning.
+
diff --git a/patches/collateral-evolutions/network/14-device-type/drivers_net_usb_usbnet.c b/patches/collateral-evolutions/network/14-device-type/drivers_net_usb_usbnet.c
new file mode 100644
index 00000000..66dcd388
--- /dev/null
+++ b/patches/collateral-evolutions/network/14-device-type/drivers_net_usb_usbnet.c
@@ -0,0 +1,20 @@
+--- a/drivers/net/usb/usbnet.c
++++ b/drivers/net/usb/usbnet.c
+@@ -1363,13 +1363,17 @@
+
+ // precondition: never called in_interrupt
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+ static struct device_type wlan_type = {
+ .name = "wlan",
+ };
++#endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+ static struct device_type wwan_type = {
+ .name = "wwan",
+ };
++#endif
+
+ int
+ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
diff --git a/patches/collateral-evolutions/network/14-device-type/net_bluetooth_bnep_core.c b/patches/collateral-evolutions/network/14-device-type/net_bluetooth_bnep_core.c
new file mode 100644
index 00000000..d8954e42
--- /dev/null
+++ b/patches/collateral-evolutions/network/14-device-type/net_bluetooth_bnep_core.c
@@ -0,0 +1,14 @@
+--- a/net/bluetooth/bnep/core.c
++++ b/net/bluetooth/bnep/core.c
+@@ -526,9 +526,11 @@
+ return conn ? &conn->dev : NULL;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+ static struct device_type bnep_type = {
+ .name = "bluetooth",
+ };
++#endif
+
+ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
+ {
diff --git a/patches/collateral-evolutions/network/14-device-type/net_wireless_core.c b/patches/collateral-evolutions/network/14-device-type/net_wireless_core.c
new file mode 100644
index 00000000..84eb5b26
--- /dev/null
+++ b/patches/collateral-evolutions/network/14-device-type/net_wireless_core.c
@@ -0,0 +1,14 @@
+--- a/net/wireless/core.c
++++ b/net/wireless/core.c
+@@ -839,9 +839,11 @@
+ }
+ EXPORT_SYMBOL(cfg80211_unregister_wdev);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+ static struct device_type wiphy_type = {
+ .name = "wlan",
+ };
++#endif
+
+ void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev,
+ enum nl80211_iftype iftype, int num)
diff --git a/patches/collateral-evolutions/network/15-symbol-export-conflicts/INFO b/patches/collateral-evolutions/network/15-symbol-export-conflicts/INFO
new file mode 100644
index 00000000..40356155
--- /dev/null
+++ b/patches/collateral-evolutions/network/15-symbol-export-conflicts/INFO
@@ -0,0 +1,3 @@
+In kernel < 2.6.32 libipw also exports ieee80211_rx.
+To avoid conflicts with the other export we rename our.
+
diff --git a/patches/collateral-evolutions/network/15-symbol-export-conflicts.patch b/patches/collateral-evolutions/network/15-symbol-export-conflicts/net_mac80211_rx.c
index 09c2ffe3..2ed169b0 100644
--- a/patches/collateral-evolutions/network/15-symbol-export-conflicts.patch
+++ b/patches/collateral-evolutions/network/15-symbol-export-conflicts/net_mac80211_rx.c
@@ -1,9 +1,6 @@
-In kernel < 2.6.32 libipw also exports ieee80211_rx.
-To avoid conflicts with the other export we rename our.
-
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -3317,7 +3317,12 @@ void ieee80211_rx(struct ieee80211_hw *h
+@@ -3317,7 +3317,12 @@
drop:
kfree_skb(skb);
}
diff --git a/patches/collateral-evolutions/network/16-bluetooth.patch b/patches/collateral-evolutions/network/16-bluetooth.patch
deleted file mode 100644
index 5ca9f4ce..00000000
--- a/patches/collateral-evolutions/network/16-bluetooth.patch
+++ /dev/null
@@ -1,575 +0,0 @@
-These changes are required to backport blueooth. A lot can be optimized
-here still, but for now we keep this here.
-
---- a/drivers/bluetooth/hci_ldisc.c
-+++ b/drivers/bluetooth/hci_ldisc.c
-@@ -297,8 +297,13 @@ static int hci_uart_tty_open(struct tty_
- /* FIXME: why is this needed. Note don't use ldisc_ref here as the
- open path is before the ldisc is referencable */
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
- if (tty->ldisc->ops->flush_buffer)
- tty->ldisc->ops->flush_buffer(tty);
-+#else
-+ if (tty->ldisc.ops->flush_buffer)
-+ tty->ldisc.ops->flush_buffer(tty);
-+#endif
- tty_driver_flush_buffer(tty);
-
- return 0;
-@@ -524,7 +529,11 @@ static int hci_uart_tty_ioctl(struct tty
- return hu->hdev_flags;
-
- default:
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
- err = n_tty_ioctl_helper(tty, file, cmd, arg);
-+#else
-+ err = n_tty_ioctl(tty, file, cmd, arg);
-+#endif
- break;
- }
-
---- a/net/bluetooth/af_bluetooth.c
-+++ b/net/bluetooth/af_bluetooth.c
-@@ -103,8 +103,12 @@ void bt_sock_unregister(int proto)
- }
- EXPORT_SYMBOL(bt_sock_unregister);
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int bt_sock_create(struct net *net, struct socket *sock, int proto,
- int kern)
-+#else
-+static int bt_sock_create(struct net *net, struct socket *sock, int proto)
-+#endif
- {
- int err;
-
-@@ -122,7 +126,11 @@ static int bt_sock_create(struct net *ne
- read_lock(&bt_proto_lock);
-
- if (bt_proto[proto] && try_module_get(bt_proto[proto]->owner)) {
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- err = bt_proto[proto]->create(net, sock, proto, kern);
-+#else
-+ err = bt_proto[proto]->create(net, sock, proto);
-+#endif
- if (!err)
- bt_sock_reclassify_lock(sock->sk, proto);
- module_put(bt_proto[proto]->owner);
-@@ -455,7 +463,11 @@ int bt_sock_ioctl(struct socket *sock, u
- if (sk->sk_state == BT_LISTEN)
- return -EINVAL;
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk);
-+#else
-+ amount = sk->sk_sndbuf - atomic_read(&sk->sk_wmem_alloc);
-+#endif
- if (amount < 0)
- amount = 0;
- err = put_user(amount, (int __user *) arg);
---- a/net/bluetooth/cmtp/capi.c
-+++ b/net/bluetooth/cmtp/capi.c
-@@ -384,7 +384,11 @@ static void cmtp_reset_ctr(struct capi_c
-
- BT_DBG("ctrl %p", ctrl);
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
- capi_ctr_down(ctrl);
-+#else
-+ capi_ctr_reseted(ctrl);
-+#endif
-
- atomic_inc(&session->terminate);
- wake_up_process(session->task);
---- a/net/bluetooth/hci_sock.c
-+++ b/net/bluetooth/hci_sock.c
-@@ -884,8 +884,13 @@ drop:
- goto done;
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
- char __user *optval, unsigned int len)
-+#else
-+static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
-+ char __user *optval, int len)
-+#endif
- {
- struct hci_ufilter uf = { .opcode = 0 };
- struct sock *sk = sock->sk;
-@@ -1059,8 +1064,12 @@ static struct proto hci_sk_proto = {
- .obj_size = sizeof(struct hci_pinfo)
- };
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int hci_sock_create(struct net *net, struct socket *sock, int protocol,
- int kern)
-+#else
-+static int hci_sock_create(struct net *net, struct socket *sock, int protocol)
-+#endif
- {
- struct sock *sk;
-
---- a/net/bluetooth/hci_sysfs.c
-+++ b/net/bluetooth/hci_sysfs.c
-@@ -72,7 +72,11 @@ static struct attribute_group bt_link_gr
- .attrs = bt_link_attrs,
- };
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static const struct attribute_group *bt_link_groups[] = {
-+#else
-+static struct attribute_group *bt_link_groups[] = {
-+#endif
- &bt_link_group,
- NULL
- };
-@@ -141,7 +145,11 @@ void hci_conn_del_sysfs(struct hci_conn
- dev = device_find_child(&conn->dev, NULL, __match_tty);
- if (!dev)
- break;
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29))
- device_move(dev, NULL, DPM_ORDER_DEV_LAST);
-+#else
-+ device_move(dev, NULL);
-+#endif
- put_device(dev);
- }
-
-@@ -379,7 +387,11 @@ static struct attribute_group bt_host_gr
- .attrs = bt_host_attrs,
- };
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static const struct attribute_group *bt_host_groups[] = {
-+#else
-+static struct attribute_group *bt_host_groups[] = {
-+#endif
- &bt_host_group,
- NULL
- };
---- a/net/bluetooth/hidp/core.c
-+++ b/net/bluetooth/hidp/core.c
-@@ -383,6 +383,7 @@ err:
- return ret;
- }
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count,
- unsigned char report_type)
- {
-@@ -441,6 +442,16 @@ err:
- mutex_unlock(&session->report_mutex);
- return ret;
- }
-+#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
-+static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count)
-+{
-+ if (hidp_send_ctrl_message(hid->driver_data,
-+ HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE,
-+ data, count))
-+ return -ENOMEM;
-+ return count;
-+}
-+#endif
-
- static void hidp_idle_timeout(unsigned long arg)
- {
-@@ -743,8 +754,14 @@ static int hidp_session(void *arg)
- }
-
- if (session->hid) {
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
- hid_destroy_device(session->hid);
- session->hid = NULL;
-+#else
-+ if (session->hid->claimed & HID_CLAIMED_INPUT)
-+ hidinput_disconnect(session->hid);
-+ hid_free_device(session->hid);
-+#endif
- }
-
- /* Wakeup user-space polling for socket errors */
-@@ -855,6 +872,70 @@ static void hidp_close(struct hid_device
- {
- }
-
-+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27))
-+static const struct {
-+ __u16 idVendor;
-+ __u16 idProduct;
-+ unsigned quirks;
-+} hidp_blacklist[] = {
-+ /* Apple wireless Mighty Mouse */
-+ { 0x05ac, 0x030c, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL },
-+
-+ { } /* Terminating entry */
-+};
-+static void hidp_setup_quirks(struct hid_device *hid)
-+{
-+ unsigned int n;
-+
-+ for (n = 0; hidp_blacklist[n].idVendor; n++)
-+ if (hidp_blacklist[n].idVendor == le16_to_cpu(hid->vendor) &&
-+ hidp_blacklist[n].idProduct == le16_to_cpu(hid->product))
-+ hid->quirks = hidp_blacklist[n].quirks;
-+}
-+
-+static void hidp_setup_hid(struct hidp_session *session,
-+ struct hidp_connadd_req *req)
-+{
-+ struct hid_device *hid = session->hid;
-+ struct hid_report *report;
-+ bdaddr_t src, dst;
-+
-+ session->hid = hid;
-+
-+ hid->driver_data = session;
-+
-+ baswap(&src, &bt_sk(session->ctrl_sock->sk)->src);
-+ baswap(&dst, &bt_sk(session->ctrl_sock->sk)->dst);
-+
-+ hid->bus = BUS_BLUETOOTH;
-+ hid->vendor = req->vendor;
-+ hid->product = req->product;
-+ hid->version = req->version;
-+ hid->country = req->country;
-+
-+ strncpy(hid->name, req->name, 128);
-+ strncpy(hid->phys, batostr(&src), 64);
-+ strncpy(hid->uniq, batostr(&dst), 64);
-+
-+ hid->dev = hidp_get_device(session);
-+ hid->hid_open = hidp_open;
-+ hid->hid_close = hidp_close;
-+
-+ hid->hidinput_input_event = hidp_hidinput_event;
-+
-+ hidp_setup_quirks(hid);
-+
-+ list_for_each_entry(report, &hid->report_enum[HID_INPUT_REPORT].report_list, list)
-+ hidp_send_report(session, report);
-+
-+ list_for_each_entry(report, &hid->report_enum[HID_FEATURE_REPORT].report_list, list)
-+ hidp_send_report(session, report);
-+
-+ if (hidinput_connect(hid) == 0)
-+ hid->claimed |= HID_CLAIMED_INPUT;
-+}
-+#else
-+
- static int hidp_parse(struct hid_device *hid)
- {
- struct hidp_session *session = hid->driver_data;
-@@ -946,7 +1027,9 @@ static int hidp_setup_hid(struct hidp_se
- hid->dev.parent = &session->conn->dev;
- hid->ll_driver = &hidp_hid_driver;
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
- hid->hid_get_raw_report = hidp_get_raw_report;
-+#endif
- hid->hid_output_raw_report = hidp_output_raw_report;
-
- /* True if device is blacklisted in drivers/hid/hid-core.c */
-@@ -964,6 +1047,7 @@ fault:
-
- return err;
- }
-+#endif
-
- int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock)
- {
-@@ -979,6 +1063,39 @@ int hidp_add_connection(struct hidp_conn
-
- BT_DBG("rd_data %p rd_size %d", req->rd_data, req->rd_size);
-
-+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27))
-+ if (req->rd_size > 0) {
-+ unsigned char *buf = kmalloc(req->rd_size, GFP_KERNEL);
-+
-+ if (!buf) {
-+ kfree(session);
-+ return -ENOMEM;
-+ }
-+
-+ if (copy_from_user(buf, req->rd_data, req->rd_size)) {
-+ kfree(buf);
-+ kfree(session);
-+ return -EFAULT;
-+ }
-+
-+ session->hid = hid_parse_report(buf, req->rd_size);
-+
-+ kfree(buf);
-+
-+ if (!session->hid) {
-+ kfree(session);
-+ return -EINVAL;
-+ }
-+ }
-+
-+ if (!session->hid) {
-+ session->input = input_allocate_device();
-+ if (!session->input) {
-+ kfree(session);
-+ return -ENOMEM;
-+ }
-+ }
-+#endif
- down_write(&hidp_session_sem);
-
- s = __hidp_get_session(&bt_sk(ctrl_sock->sk)->dst);
-@@ -1026,6 +1143,7 @@ int hidp_add_connection(struct hidp_conn
-
- __hidp_link_session(session);
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
- if (req->rd_size > 0) {
- err = hidp_setup_hid(session, req);
- if (err && err != -ENODEV)
-@@ -1037,6 +1155,16 @@ int hidp_add_connection(struct hidp_conn
- if (err < 0)
- goto purge;
- }
-+#else
-+ if (session->input) {
-+ err = hidp_setup_input(session, req);
-+ if (err < 0)
-+ goto failed;
-+ }
-+
-+ if (session->hid)
-+ hidp_setup_hid(session, req);
-+#endif
-
- hidp_set_timer(session);
-
-@@ -1095,6 +1223,7 @@ unlink:
- session->input = NULL;
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
- if (session->hid) {
- hid_destroy_device(session->hid);
- session->hid = NULL;
-@@ -1108,10 +1237,15 @@ purge:
-
- skb_queue_purge(&session->ctrl_transmit);
- skb_queue_purge(&session->intr_transmit);
-+#endif
-
- failed:
- up_write(&hidp_session_sem);
-
-+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27))
-+ if (session->hid)
-+ hid_free_device(session->hid);
-+#endif
- kfree(session);
- return err;
- }
---- a/net/bluetooth/rfcomm/sock.c
-+++ b/net/bluetooth/rfcomm/sock.c
-@@ -304,8 +304,13 @@ static struct sock *rfcomm_sock_alloc(st
- return sk;
- }
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int rfcomm_sock_create(struct net *net, struct socket *sock,
- int protocol, int kern)
-+#else
-+static int rfcomm_sock_create(struct net *net, struct socket *sock,
-+ int protocol)
-+#endif
- {
- struct sock *sk;
-
-@@ -660,7 +665,11 @@ static int rfcomm_sock_setsockopt_old(st
- return err;
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
-+#else
-+static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
-+#endif
- {
- struct sock *sk = sock->sk;
- struct bt_security sec;
---- a/net/bluetooth/rfcomm/tty.c
-+++ b/net/bluetooth/rfcomm/tty.c
-@@ -708,8 +708,12 @@ static int rfcomm_tty_open(struct tty_st
- remove_wait_queue(&dev->wait, &wait);
-
- if (err == 0)
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29))
- device_move(dev->tty_dev, rfcomm_get_device(dev),
- DPM_ORDER_DEV_AFTER_PARENT);
-+#else
-+ device_move(dev->tty_dev, rfcomm_get_device(dev));
-+#endif
-
- rfcomm_tty_copy_pending(dev);
-
-@@ -733,7 +737,11 @@ static void rfcomm_tty_close(struct tty_
- if (!--dev->port.count) {
- spin_unlock_irqrestore(&dev->port.lock, flags);
- if (dev->tty_dev->parent)
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29))
- device_move(dev->tty_dev, NULL, DPM_ORDER_DEV_LAST);
-+#else
-+ device_move(dev->tty_dev, NULL);
-+#endif
-
- /* Close DLC and dettach TTY */
- rfcomm_dlc_close(dev->dlc, 0);
-@@ -809,7 +817,11 @@ static int rfcomm_tty_write_room(struct
- return room;
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
- static int rfcomm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
-+#else
-+static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg)
-+#endif
- {
- BT_DBG("tty %p cmd 0x%02x", tty, cmd);
-
-@@ -1068,7 +1080,11 @@ static void rfcomm_tty_hangup(struct tty
- }
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
- static int rfcomm_tty_tiocmget(struct tty_struct *tty)
-+#else
-+static int rfcomm_tty_tiocmget(struct tty_struct *tty, struct file *filp)
-+#endif
- {
- struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
-
-@@ -1077,7 +1093,11 @@ static int rfcomm_tty_tiocmget(struct tt
- return dev->modem_status;
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
- static int rfcomm_tty_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear)
-+#else
-+static int rfcomm_tty_tiocmset(struct tty_struct *tty, struct file *filp, unsigned int set, unsigned int clear)
-+#endif
- {
- struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
- struct rfcomm_dlc *dlc = dev->dlc;
---- a/net/bluetooth/sco.c
-+++ b/net/bluetooth/sco.c
-@@ -423,8 +423,12 @@ static struct sock *sco_sock_alloc(struc
- return sk;
- }
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int sco_sock_create(struct net *net, struct socket *sock, int protocol,
- int kern)
-+#else
-+static int sco_sock_create(struct net *net, struct socket *sock, int protocol)
-+#endif
- {
- struct sock *sk;
-
-@@ -675,7 +679,11 @@ static int sco_sock_recvmsg(struct kiocb
- return bt_sock_recvmsg(iocb, sock, msg, len, flags);
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
-+#else
-+static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
-+#endif
- {
- struct sock *sk = sock->sk;
- int err = 0;
---- a/net/bluetooth/bnep/sock.c
-+++ b/net/bluetooth/bnep/sock.c
-@@ -186,8 +186,12 @@ static struct proto bnep_proto = {
- .obj_size = sizeof(struct bt_sock)
- };
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int bnep_sock_create(struct net *net, struct socket *sock, int protocol,
- int kern)
-+#else
-+static int bnep_sock_create(struct net *net, struct socket *sock, int protocol)
-+#endif
- {
- struct sock *sk;
-
---- a/net/bluetooth/cmtp/sock.c
-+++ b/net/bluetooth/cmtp/sock.c
-@@ -195,8 +195,12 @@ static struct proto cmtp_proto = {
- .obj_size = sizeof(struct bt_sock)
- };
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int cmtp_sock_create(struct net *net, struct socket *sock, int protocol,
- int kern)
-+#else
-+static int cmtp_sock_create(struct net *net, struct socket *sock, int protocol)
-+#endif
- {
- struct sock *sk;
-
---- a/net/bluetooth/hidp/sock.c
-+++ b/net/bluetooth/hidp/sock.c
-@@ -235,8 +235,12 @@ static struct proto hidp_proto = {
- .obj_size = sizeof(struct bt_sock)
- };
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int hidp_sock_create(struct net *net, struct socket *sock, int protocol,
- int kern)
-+#else
-+static int hidp_sock_create(struct net *net, struct socket *sock, int protocol)
-+#endif
- {
- struct sock *sk;
-
---- a/net/bluetooth/l2cap_sock.c
-+++ b/net/bluetooth/l2cap_sock.c
-@@ -573,8 +573,13 @@ static int l2cap_sock_setsockopt_old(str
- return err;
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
- char __user *optval, unsigned int optlen)
-+#else
-+static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
-+ char __user *optval, int optlen)
-+#endif
- {
- struct sock *sk = sock->sk;
- struct l2cap_chan *chan = l2cap_pi(sk)->chan;
-@@ -1225,8 +1230,12 @@ static struct sock *l2cap_sock_alloc(str
- return sk;
- }
-
-+#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
- static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
- int kern)
-+#else
-+static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol)
-+#endif
- {
- struct sock *sk;
-
-@@ -1238,7 +1247,11 @@ static int l2cap_sock_create(struct net
- sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
- return -ESOCKTNOSUPPORT;
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32))
- if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
-+#else
-+ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
-+#endif
- return -EPERM;
-
- sock->ops = &l2cap_sock_ops;
diff --git a/patches/collateral-evolutions/network/16-bluetooth/INFO b/patches/collateral-evolutions/network/16-bluetooth/INFO
new file mode 100644
index 00000000..7df4a684
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/INFO
@@ -0,0 +1,3 @@
+These changes are required to backport blueooth. A lot can be optimized
+here still, but for now we keep this here.
+
diff --git a/patches/collateral-evolutions/network/16-bluetooth/drivers_bluetooth_hci_ldisc.c b/patches/collateral-evolutions/network/16-bluetooth/drivers_bluetooth_hci_ldisc.c
new file mode 100644
index 00000000..5248d2d6
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/drivers_bluetooth_hci_ldisc.c
@@ -0,0 +1,28 @@
+--- a/drivers/bluetooth/hci_ldisc.c
++++ b/drivers/bluetooth/hci_ldisc.c
+@@ -297,8 +297,13 @@
+ /* FIXME: why is this needed. Note don't use ldisc_ref here as the
+ open path is before the ldisc is referencable */
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
+ if (tty->ldisc->ops->flush_buffer)
+ tty->ldisc->ops->flush_buffer(tty);
++#else
++ if (tty->ldisc.ops->flush_buffer)
++ tty->ldisc.ops->flush_buffer(tty);
++#endif
+ tty_driver_flush_buffer(tty);
+
+ return 0;
+@@ -524,7 +529,11 @@
+ return hu->hdev_flags;
+
+ default:
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
+ err = n_tty_ioctl_helper(tty, file, cmd, arg);
++#else
++ err = n_tty_ioctl(tty, file, cmd, arg);
++#endif
+ break;
+ }
+
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_af_bluetooth.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_af_bluetooth.c
new file mode 100644
index 00000000..e4823d52
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_af_bluetooth.c
@@ -0,0 +1,39 @@
+--- a/net/bluetooth/af_bluetooth.c
++++ b/net/bluetooth/af_bluetooth.c
+@@ -103,8 +103,12 @@
+ }
+ EXPORT_SYMBOL(bt_sock_unregister);
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int bt_sock_create(struct net *net, struct socket *sock, int proto,
+ int kern)
++#else
++static int bt_sock_create(struct net *net, struct socket *sock, int proto)
++#endif
+ {
+ int err;
+
+@@ -122,7 +126,11 @@
+ read_lock(&bt_proto_lock);
+
+ if (bt_proto[proto] && try_module_get(bt_proto[proto]->owner)) {
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ err = bt_proto[proto]->create(net, sock, proto, kern);
++#else
++ err = bt_proto[proto]->create(net, sock, proto);
++#endif
+ if (!err)
+ bt_sock_reclassify_lock(sock->sk, proto);
+ module_put(bt_proto[proto]->owner);
+@@ -455,7 +463,11 @@
+ if (sk->sk_state == BT_LISTEN)
+ return -EINVAL;
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk);
++#else
++ amount = sk->sk_sndbuf - atomic_read(&sk->sk_wmem_alloc);
++#endif
+ if (amount < 0)
+ amount = 0;
+ err = put_user(amount, (int __user *) arg);
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_bnep_sock.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_bnep_sock.c
new file mode 100644
index 00000000..13e1f1bc
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_bnep_sock.c
@@ -0,0 +1,15 @@
+--- a/net/bluetooth/bnep/sock.c
++++ b/net/bluetooth/bnep/sock.c
+@@ -186,8 +186,12 @@
+ .obj_size = sizeof(struct bt_sock)
+ };
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int bnep_sock_create(struct net *net, struct socket *sock, int protocol,
+ int kern)
++#else
++static int bnep_sock_create(struct net *net, struct socket *sock, int protocol)
++#endif
+ {
+ struct sock *sk;
+
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_capi.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_capi.c
new file mode 100644
index 00000000..25a51dcc
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_capi.c
@@ -0,0 +1,14 @@
+--- a/net/bluetooth/cmtp/capi.c
++++ b/net/bluetooth/cmtp/capi.c
+@@ -384,7 +384,11 @@
+
+ BT_DBG("ctrl %p", ctrl);
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
+ capi_ctr_down(ctrl);
++#else
++ capi_ctr_reseted(ctrl);
++#endif
+
+ atomic_inc(&session->terminate);
+ wake_up_process(session->task);
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_sock.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_sock.c
new file mode 100644
index 00000000..eed70c6a
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_cmtp_sock.c
@@ -0,0 +1,15 @@
+--- a/net/bluetooth/cmtp/sock.c
++++ b/net/bluetooth/cmtp/sock.c
+@@ -195,8 +195,12 @@
+ .obj_size = sizeof(struct bt_sock)
+ };
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int cmtp_sock_create(struct net *net, struct socket *sock, int protocol,
+ int kern)
++#else
++static int cmtp_sock_create(struct net *net, struct socket *sock, int protocol)
++#endif
+ {
+ struct sock *sk;
+
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sock.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sock.c
new file mode 100644
index 00000000..87a98121
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sock.c
@@ -0,0 +1,29 @@
+--- a/net/bluetooth/hci_sock.c
++++ b/net/bluetooth/hci_sock.c
+@@ -884,8 +884,13 @@
+ goto done;
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
+ char __user *optval, unsigned int len)
++#else
++static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
++ char __user *optval, int len)
++#endif
+ {
+ struct hci_ufilter uf = { .opcode = 0 };
+ struct sock *sk = sock->sk;
+@@ -1059,8 +1064,12 @@
+ .obj_size = sizeof(struct hci_pinfo)
+ };
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int hci_sock_create(struct net *net, struct socket *sock, int protocol,
+ int kern)
++#else
++static int hci_sock_create(struct net *net, struct socket *sock, int protocol)
++#endif
+ {
+ struct sock *sk;
+
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sysfs.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sysfs.c
new file mode 100644
index 00000000..df664bdc
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hci_sysfs.c
@@ -0,0 +1,38 @@
+--- a/net/bluetooth/hci_sysfs.c
++++ b/net/bluetooth/hci_sysfs.c
+@@ -72,7 +72,11 @@
+ .attrs = bt_link_attrs,
+ };
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static const struct attribute_group *bt_link_groups[] = {
++#else
++static struct attribute_group *bt_link_groups[] = {
++#endif
+ &bt_link_group,
+ NULL
+ };
+@@ -141,7 +145,11 @@
+ dev = device_find_child(&conn->dev, NULL, __match_tty);
+ if (!dev)
+ break;
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29))
+ device_move(dev, NULL, DPM_ORDER_DEV_LAST);
++#else
++ device_move(dev, NULL);
++#endif
+ put_device(dev);
+ }
+
+@@ -379,7 +387,11 @@
+ .attrs = bt_host_attrs,
+ };
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static const struct attribute_group *bt_host_groups[] = {
++#else
++static struct attribute_group *bt_host_groups[] = {
++#endif
+ &bt_host_group,
+ NULL
+ };
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_core.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_core.c
new file mode 100644
index 00000000..0807ccc7
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_core.c
@@ -0,0 +1,220 @@
+--- a/net/bluetooth/hidp/core.c
++++ b/net/bluetooth/hidp/core.c
+@@ -383,6 +383,7 @@
+ return ret;
+ }
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count,
+ unsigned char report_type)
+ {
+@@ -441,6 +442,16 @@
+ mutex_unlock(&session->report_mutex);
+ return ret;
+ }
++#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
++static int hidp_output_raw_report(struct hid_device *hid, unsigned char *data, size_t count)
++{
++ if (hidp_send_ctrl_message(hid->driver_data,
++ HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE,
++ data, count))
++ return -ENOMEM;
++ return count;
++}
++#endif
+
+ static void hidp_idle_timeout(unsigned long arg)
+ {
+@@ -743,8 +754,14 @@
+ }
+
+ if (session->hid) {
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
+ hid_destroy_device(session->hid);
+ session->hid = NULL;
++#else
++ if (session->hid->claimed & HID_CLAIMED_INPUT)
++ hidinput_disconnect(session->hid);
++ hid_free_device(session->hid);
++#endif
+ }
+
+ /* Wakeup user-space polling for socket errors */
+@@ -855,6 +872,70 @@
+ {
+ }
+
++#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27))
++static const struct {
++ __u16 idVendor;
++ __u16 idProduct;
++ unsigned quirks;
++} hidp_blacklist[] = {
++ /* Apple wireless Mighty Mouse */
++ { 0x05ac, 0x030c, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL },
++
++ { } /* Terminating entry */
++};
++static void hidp_setup_quirks(struct hid_device *hid)
++{
++ unsigned int n;
++
++ for (n = 0; hidp_blacklist[n].idVendor; n++)
++ if (hidp_blacklist[n].idVendor == le16_to_cpu(hid->vendor) &&
++ hidp_blacklist[n].idProduct == le16_to_cpu(hid->product))
++ hid->quirks = hidp_blacklist[n].quirks;
++}
++
++static void hidp_setup_hid(struct hidp_session *session,
++ struct hidp_connadd_req *req)
++{
++ struct hid_device *hid = session->hid;
++ struct hid_report *report;
++ bdaddr_t src, dst;
++
++ session->hid = hid;
++
++ hid->driver_data = session;
++
++ baswap(&src, &bt_sk(session->ctrl_sock->sk)->src);
++ baswap(&dst, &bt_sk(session->ctrl_sock->sk)->dst);
++
++ hid->bus = BUS_BLUETOOTH;
++ hid->vendor = req->vendor;
++ hid->product = req->product;
++ hid->version = req->version;
++ hid->country = req->country;
++
++ strncpy(hid->name, req->name, 128);
++ strncpy(hid->phys, batostr(&src), 64);
++ strncpy(hid->uniq, batostr(&dst), 64);
++
++ hid->dev = hidp_get_device(session);
++ hid->hid_open = hidp_open;
++ hid->hid_close = hidp_close;
++
++ hid->hidinput_input_event = hidp_hidinput_event;
++
++ hidp_setup_quirks(hid);
++
++ list_for_each_entry(report, &hid->report_enum[HID_INPUT_REPORT].report_list, list)
++ hidp_send_report(session, report);
++
++ list_for_each_entry(report, &hid->report_enum[HID_FEATURE_REPORT].report_list, list)
++ hidp_send_report(session, report);
++
++ if (hidinput_connect(hid) == 0)
++ hid->claimed |= HID_CLAIMED_INPUT;
++}
++#else
++
+ static int hidp_parse(struct hid_device *hid)
+ {
+ struct hidp_session *session = hid->driver_data;
+@@ -946,7 +1027,9 @@
+ hid->dev.parent = &session->conn->dev;
+ hid->ll_driver = &hidp_hid_driver;
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
+ hid->hid_get_raw_report = hidp_get_raw_report;
++#endif
+ hid->hid_output_raw_report = hidp_output_raw_report;
+
+ /* True if device is blacklisted in drivers/hid/hid-core.c */
+@@ -964,6 +1047,7 @@
+
+ return err;
+ }
++#endif
+
+ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock)
+ {
+@@ -979,6 +1063,39 @@
+
+ BT_DBG("rd_data %p rd_size %d", req->rd_data, req->rd_size);
+
++#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27))
++ if (req->rd_size > 0) {
++ unsigned char *buf = kmalloc(req->rd_size, GFP_KERNEL);
++
++ if (!buf) {
++ kfree(session);
++ return -ENOMEM;
++ }
++
++ if (copy_from_user(buf, req->rd_data, req->rd_size)) {
++ kfree(buf);
++ kfree(session);
++ return -EFAULT;
++ }
++
++ session->hid = hid_parse_report(buf, req->rd_size);
++
++ kfree(buf);
++
++ if (!session->hid) {
++ kfree(session);
++ return -EINVAL;
++ }
++ }
++
++ if (!session->hid) {
++ session->input = input_allocate_device();
++ if (!session->input) {
++ kfree(session);
++ return -ENOMEM;
++ }
++ }
++#endif
+ down_write(&hidp_session_sem);
+
+ s = __hidp_get_session(&bt_sk(ctrl_sock->sk)->dst);
+@@ -1026,6 +1143,7 @@
+
+ __hidp_link_session(session);
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
+ if (req->rd_size > 0) {
+ err = hidp_setup_hid(session, req);
+ if (err && err != -ENODEV)
+@@ -1037,6 +1155,16 @@
+ if (err < 0)
+ goto purge;
+ }
++#else
++ if (session->input) {
++ err = hidp_setup_input(session, req);
++ if (err < 0)
++ goto failed;
++ }
++
++ if (session->hid)
++ hidp_setup_hid(session, req);
++#endif
+
+ hidp_set_timer(session);
+
+@@ -1095,6 +1223,7 @@
+ session->input = NULL;
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
+ if (session->hid) {
+ hid_destroy_device(session->hid);
+ session->hid = NULL;
+@@ -1108,10 +1237,15 @@
+
+ skb_queue_purge(&session->ctrl_transmit);
+ skb_queue_purge(&session->intr_transmit);
++#endif
+
+ failed:
+ up_write(&hidp_session_sem);
+
++#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27))
++ if (session->hid)
++ hid_free_device(session->hid);
++#endif
+ kfree(session);
+ return err;
+ }
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_sock.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_sock.c
new file mode 100644
index 00000000..0cf1f8c3
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_hidp_sock.c
@@ -0,0 +1,15 @@
+--- a/net/bluetooth/hidp/sock.c
++++ b/net/bluetooth/hidp/sock.c
+@@ -235,8 +235,12 @@
+ .obj_size = sizeof(struct bt_sock)
+ };
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int hidp_sock_create(struct net *net, struct socket *sock, int protocol,
+ int kern)
++#else
++static int hidp_sock_create(struct net *net, struct socket *sock, int protocol)
++#endif
+ {
+ struct sock *sk;
+
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_l2cap_sock.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_l2cap_sock.c
new file mode 100644
index 00000000..89307b41
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_l2cap_sock.c
@@ -0,0 +1,41 @@
+--- a/net/bluetooth/l2cap_sock.c
++++ b/net/bluetooth/l2cap_sock.c
+@@ -573,8 +573,13 @@
+ return err;
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
+ char __user *optval, unsigned int optlen)
++#else
++static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
++ char __user *optval, int optlen)
++#endif
+ {
+ struct sock *sk = sock->sk;
+ struct l2cap_chan *chan = l2cap_pi(sk)->chan;
+@@ -1225,8 +1230,12 @@
+ return sk;
+ }
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
+ int kern)
++#else
++static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol)
++#endif
+ {
+ struct sock *sk;
+
+@@ -1238,7 +1247,11 @@
+ sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
+ return -ESOCKTNOSUPPORT;
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32))
+ if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
++#else
++ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
++#endif
+ return -EPERM;
+
+ sock->ops = &l2cap_sock_ops;
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_sock.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_sock.c
new file mode 100644
index 00000000..5affe501
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_sock.c
@@ -0,0 +1,28 @@
+--- a/net/bluetooth/rfcomm/sock.c
++++ b/net/bluetooth/rfcomm/sock.c
+@@ -304,8 +304,13 @@
+ return sk;
+ }
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int rfcomm_sock_create(struct net *net, struct socket *sock,
+ int protocol, int kern)
++#else
++static int rfcomm_sock_create(struct net *net, struct socket *sock,
++ int protocol)
++#endif
+ {
+ struct sock *sk;
+
+@@ -660,7 +665,11 @@
+ return err;
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
++#else
++static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++#endif
+ {
+ struct sock *sk = sock->sk;
+ struct bt_security sec;
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_tty.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_tty.c
new file mode 100644
index 00000000..957122ec
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_rfcomm_tty.c
@@ -0,0 +1,63 @@
+--- a/net/bluetooth/rfcomm/tty.c
++++ b/net/bluetooth/rfcomm/tty.c
+@@ -708,8 +708,12 @@
+ remove_wait_queue(&dev->wait, &wait);
+
+ if (err == 0)
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29))
+ device_move(dev->tty_dev, rfcomm_get_device(dev),
+ DPM_ORDER_DEV_AFTER_PARENT);
++#else
++ device_move(dev->tty_dev, rfcomm_get_device(dev));
++#endif
+
+ rfcomm_tty_copy_pending(dev);
+
+@@ -733,7 +737,11 @@
+ if (!--dev->port.count) {
+ spin_unlock_irqrestore(&dev->port.lock, flags);
+ if (dev->tty_dev->parent)
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,29))
+ device_move(dev->tty_dev, NULL, DPM_ORDER_DEV_LAST);
++#else
++ device_move(dev->tty_dev, NULL);
++#endif
+
+ /* Close DLC and dettach TTY */
+ rfcomm_dlc_close(dev->dlc, 0);
+@@ -809,7 +817,11 @@
+ return room;
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
+ static int rfcomm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
++#else
++static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg)
++#endif
+ {
+ BT_DBG("tty %p cmd 0x%02x", tty, cmd);
+
+@@ -1068,7 +1080,11 @@
+ }
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
+ static int rfcomm_tty_tiocmget(struct tty_struct *tty)
++#else
++static int rfcomm_tty_tiocmget(struct tty_struct *tty, struct file *filp)
++#endif
+ {
+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
+
+@@ -1077,7 +1093,11 @@
+ return dev->modem_status;
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
+ static int rfcomm_tty_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear)
++#else
++static int rfcomm_tty_tiocmset(struct tty_struct *tty, struct file *filp, unsigned int set, unsigned int clear)
++#endif
+ {
+ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data;
+ struct rfcomm_dlc *dlc = dev->dlc;
diff --git a/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_sco.c b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_sco.c
new file mode 100644
index 00000000..64bc1a4c
--- /dev/null
+++ b/patches/collateral-evolutions/network/16-bluetooth/net_bluetooth_sco.c
@@ -0,0 +1,27 @@
+--- a/net/bluetooth/sco.c
++++ b/net/bluetooth/sco.c
+@@ -423,8 +423,12 @@
+ return sk;
+ }
+
++#if defined(CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN)
+ static int sco_sock_create(struct net *net, struct socket *sock, int protocol,
+ int kern)
++#else
++static int sco_sock_create(struct net *net, struct socket *sock, int protocol)
++#endif
+ {
+ struct sock *sk;
+
+@@ -675,7 +679,11 @@
+ return bt_sock_recvmsg(iocb, sock, msg, len, flags);
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
++#else
++static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++#endif
+ {
+ struct sock *sk = sock->sk;
+ int err = 0;
diff --git a/patches/collateral-evolutions/network/17-netdev-queue/INFO b/patches/collateral-evolutions/network/17-netdev-queue/INFO
new file mode 100644
index 00000000..ea3688d6
--- /dev/null
+++ b/patches/collateral-evolutions/network/17-netdev-queue/INFO
@@ -0,0 +1,14 @@
+This patch addresses changes made by usage of new symbols
+like unregister_netdevice_queue() which are not possible to backport
+due to their reliance on internal symbols on net/core/dev.c
+
+The patch that introduced this on mac80211 was:
+
+ mac80211: Speedup ieee80211_remove_interfaces()
+
+ Speedup ieee80211_remove_interfaces() by factorizing synchronize_rcu() calls
+
+ Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
+ Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
+ Signed-off-by: John W. Linville <linville@tuxdriver.com>
+
diff --git a/patches/collateral-evolutions/network/17-netdev-queue.patch b/patches/collateral-evolutions/network/17-netdev-queue/net_mac80211_iface.c
index 9dbe17b5..5c8f6976 100644
--- a/patches/collateral-evolutions/network/17-netdev-queue.patch
+++ b/patches/collateral-evolutions/network/17-netdev-queue/net_mac80211_iface.c
@@ -1,20 +1,6 @@
-This patch addresses changes made by usage of new symbols
-like unregister_netdevice_queue() which are not possible to backport
-due to their reliance on internal symbols on net/core/dev.c
-
-The patch that introduced this on mac80211 was:
-
- mac80211: Speedup ieee80211_remove_interfaces()
-
- Speedup ieee80211_remove_interfaces() by factorizing synchronize_rcu() calls
-
- Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
- Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
- Signed-off-by: John W. Linville <linville@tuxdriver.com>
-
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1643,6 +1643,7 @@ void ieee80211_sdata_stop(struct ieee802
+@@ -1643,6 +1643,7 @@
* Remove all interfaces, may only be called at hardware unregistration
* time because it doesn't do RCU-safe list removals.
*/
@@ -22,7 +8,7 @@ The patch that introduced this on mac80211 was:
void ieee80211_remove_interfaces(struct ieee80211_local *local)
{
struct ieee80211_sub_if_data *sdata, *tmp;
-@@ -1670,6 +1671,22 @@ void ieee80211_remove_interfaces(struct
+@@ -1670,6 +1671,22 @@
kfree(sdata);
}
}
diff --git a/patches/collateral-evolutions/network/18-rename-usb-net-symbols.patch b/patches/collateral-evolutions/network/18-rename-usb-net-symbols.patch
deleted file mode 100644
index ecb8b0a0..00000000
--- a/patches/collateral-evolutions/network/18-rename-usb-net-symbols.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Rename config names for usbnet to deactivate them also if activated in
-the main kernel configuration. This is needed because
-usb_autopm_put_interface_async and usb_autopm_get_interface_async are
-not backported to kernel 2.6.28 and earlier.
-Remove this patch if these symbols are backported.
-
---- a/drivers/net/usb/Makefile
-+++ b/drivers/net/usb/Makefile
-@@ -10,7 +10,7 @@ obj-$(CONFIG_USB_HSO) += hso.o
- obj-$(CONFIG_USB_NET_AX8817X) += asix.o
- asix-y := asix_devices.o asix_common.o ax88172a.o
- obj-$(CONFIG_USB_NET_AX88179_178A) += ax88179_178a.o
--obj-$(CONFIG_USB_NET_CDCETHER) += cdc_ether.o
-+obj-$(CONFIG_USB_NET_COMPAT_CDCETHER) += cdc_ether.o
- obj-$(CONFIG_USB_NET_CDC_EEM) += cdc_eem.o
- obj-$(CONFIG_USB_NET_DM9601) += dm9601.o
- obj-$(CONFIG_USB_NET_SMSC75XX) += smsc75xx.o
-@@ -18,11 +18,11 @@ obj-$(CONFIG_USB_NET_SMSC95XX) += smsc95
- obj-$(CONFIG_USB_NET_GL620A) += gl620a.o
- obj-$(CONFIG_USB_NET_NET1080) += net1080.o
- obj-$(CONFIG_USB_NET_PLUSB) += plusb.o
--obj-$(CONFIG_USB_NET_RNDIS_HOST) += rndis_host.o
-+obj-$(CONFIG_USB_NET_COMPAT_RNDIS_HOST) += rndis_host.o
- obj-$(CONFIG_USB_NET_CDC_SUBSET) += cdc_subset.o
- obj-$(CONFIG_USB_NET_ZAURUS) += zaurus.o
- obj-$(CONFIG_USB_NET_MCS7830) += mcs7830.o
--obj-$(CONFIG_USB_USBNET) += usbnet.o
-+obj-$(CONFIG_USB_COMPAT_USBNET) += usbnet.o
- obj-$(CONFIG_USB_NET_INT51X1) += int51x1.o
- obj-$(CONFIG_USB_CDC_PHONET) += cdc-phonet.o
- obj-$(CONFIG_USB_NET_KALMIA) += kalmia.o
---- a/drivers/net/usb/cdc_ether.c
-+++ b/drivers/net/usb/cdc_ether.c
-@@ -33,7 +33,7 @@
- #include <linux/usb/usbnet.h>
-
-
--#if defined(CONFIG_USB_NET_RNDIS_HOST) || defined(CONFIG_USB_NET_RNDIS_HOST_MODULE)
-+#if defined(CONFIG_USB_NET_COMPAT_RNDIS_HOST) || defined(CONFIG_USB_NET_COMPAT_RNDIS_HOST_MODULE)
-
- static int is_rndis(struct usb_interface_descriptor *desc)
- {
---- a/drivers/net/wireless/Makefile
-+++ b/drivers/net/wireless/Makefile
-@@ -30,7 +30,7 @@ obj-$(CONFIG_RTLWIFI) += rtlwifi/
- obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o
- obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs.o
-
--obj-$(CONFIG_USB_NET_RNDIS_WLAN) += rndis_wlan.o
-+obj-$(CONFIG_USB_NET_COMPAT_RNDIS_WLAN) += rndis_wlan.o
-
- obj-$(CONFIG_USB_ZD1201) += zd1201.o
- obj-$(CONFIG_LIBERTAS) += libertas/
diff --git a/patches/collateral-evolutions/network/18-rename-usb-net-symbols/INFO b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/INFO
new file mode 100644
index 00000000..b98e835a
--- /dev/null
+++ b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/INFO
@@ -0,0 +1,6 @@
+Rename config names for usbnet to deactivate them also if activated in
+the main kernel configuration. This is needed because
+usb_autopm_put_interface_async and usb_autopm_get_interface_async are
+not backported to kernel 2.6.28 and earlier.
+Remove this patch if these symbols are backported.
+
diff --git a/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_Makefile b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_Makefile
new file mode 100644
index 00000000..4737a861
--- /dev/null
+++ b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_Makefile
@@ -0,0 +1,25 @@
+--- a/drivers/net/usb/Makefile
++++ b/drivers/net/usb/Makefile
+@@ -10,7 +10,7 @@
+ obj-$(CONFIG_USB_NET_AX8817X) += asix.o
+ asix-y := asix_devices.o asix_common.o ax88172a.o
+ obj-$(CONFIG_USB_NET_AX88179_178A) += ax88179_178a.o
+-obj-$(CONFIG_USB_NET_CDCETHER) += cdc_ether.o
++obj-$(CONFIG_USB_NET_COMPAT_CDCETHER) += cdc_ether.o
+ obj-$(CONFIG_USB_NET_CDC_EEM) += cdc_eem.o
+ obj-$(CONFIG_USB_NET_DM9601) += dm9601.o
+ obj-$(CONFIG_USB_NET_SMSC75XX) += smsc75xx.o
+@@ -18,11 +18,11 @@
+ obj-$(CONFIG_USB_NET_GL620A) += gl620a.o
+ obj-$(CONFIG_USB_NET_NET1080) += net1080.o
+ obj-$(CONFIG_USB_NET_PLUSB) += plusb.o
+-obj-$(CONFIG_USB_NET_RNDIS_HOST) += rndis_host.o
++obj-$(CONFIG_USB_NET_COMPAT_RNDIS_HOST) += rndis_host.o
+ obj-$(CONFIG_USB_NET_CDC_SUBSET) += cdc_subset.o
+ obj-$(CONFIG_USB_NET_ZAURUS) += zaurus.o
+ obj-$(CONFIG_USB_NET_MCS7830) += mcs7830.o
+-obj-$(CONFIG_USB_USBNET) += usbnet.o
++obj-$(CONFIG_USB_COMPAT_USBNET) += usbnet.o
+ obj-$(CONFIG_USB_NET_INT51X1) += int51x1.o
+ obj-$(CONFIG_USB_CDC_PHONET) += cdc-phonet.o
+ obj-$(CONFIG_USB_NET_KALMIA) += kalmia.o
diff --git a/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_cdc_ether.c b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_cdc_ether.c
new file mode 100644
index 00000000..dab385f5
--- /dev/null
+++ b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_usb_cdc_ether.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/usb/cdc_ether.c
++++ b/drivers/net/usb/cdc_ether.c
+@@ -33,7 +33,7 @@
+ #include <linux/usb/usbnet.h>
+
+
+-#if defined(CONFIG_USB_NET_RNDIS_HOST) || defined(CONFIG_USB_NET_RNDIS_HOST_MODULE)
++#if defined(CONFIG_USB_NET_COMPAT_RNDIS_HOST) || defined(CONFIG_USB_NET_COMPAT_RNDIS_HOST_MODULE)
+
+ static int is_rndis(struct usb_interface_descriptor *desc)
+ {
diff --git a/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_wireless_Makefile b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_wireless_Makefile
new file mode 100644
index 00000000..7b8d22f9
--- /dev/null
+++ b/patches/collateral-evolutions/network/18-rename-usb-net-symbols/drivers_net_wireless_Makefile
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/Makefile
++++ b/drivers/net/wireless/Makefile
+@@ -30,7 +30,7 @@
+ obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o
+ obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs.o
+
+-obj-$(CONFIG_USB_NET_RNDIS_WLAN) += rndis_wlan.o
++obj-$(CONFIG_USB_NET_COMPAT_RNDIS_WLAN) += rndis_wlan.o
+
+ obj-$(CONFIG_USB_ZD1201) += zd1201.o
+ obj-$(CONFIG_LIBERTAS) += libertas/
diff --git a/patches/collateral-evolutions/network/21-capi-proc_fops/INFO b/patches/collateral-evolutions/network/21-capi-proc_fops/INFO
new file mode 100644
index 00000000..30afaec6
--- /dev/null
+++ b/patches/collateral-evolutions/network/21-capi-proc_fops/INFO
@@ -0,0 +1,3 @@
+Backport kernel patch 9a58a80a701bdb2d220cdab4914218df5b48d781
+proc_fops: convert drivers/isdn/ to seq_file
+
diff --git a/patches/collateral-evolutions/network/21-capi-proc_fops.patch b/patches/collateral-evolutions/network/21-capi-proc_fops/net_bluetooth_cmtp_capi.c
index 7dc92f40..c733cc60 100644
--- a/patches/collateral-evolutions/network/21-capi-proc_fops.patch
+++ b/patches/collateral-evolutions/network/21-capi-proc_fops/net_bluetooth_cmtp_capi.c
@@ -1,6 +1,3 @@
-Backport kernel patch 9a58a80a701bdb2d220cdab4914218df5b48d781
-proc_fops: convert drivers/isdn/ to seq_file
-
--- a/net/bluetooth/cmtp/capi.c
+++ b/net/bluetooth/cmtp/capi.c
@@ -21,8 +21,10 @@
@@ -14,7 +11,7 @@ proc_fops: convert drivers/isdn/ to seq_file
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/kernel.h>
-@@ -522,6 +524,7 @@ static char *cmtp_procinfo(struct capi_c
+@@ -522,6 +524,7 @@
return "CAPI Message Transport Protocol";
}
@@ -22,7 +19,7 @@ proc_fops: convert drivers/isdn/ to seq_file
static int cmtp_proc_show(struct seq_file *m, void *v)
{
struct capi_ctr *ctrl = m->private;
-@@ -554,6 +557,36 @@ static const struct file_operations cmtp
+@@ -554,6 +557,36 @@
.release = single_release,
};
@@ -59,7 +56,7 @@ proc_fops: convert drivers/isdn/ to seq_file
int cmtp_attach_device(struct cmtp_session *session)
{
unsigned char buf[4];
-@@ -592,7 +625,11 @@ int cmtp_attach_device(struct cmtp_sessi
+@@ -592,7 +625,11 @@
session->ctrl.send_message = cmtp_send_message;
session->ctrl.procinfo = cmtp_procinfo;
diff --git a/patches/collateral-evolutions/network/22-multiqueue.patch b/patches/collateral-evolutions/network/22-multiqueue/INFO
index 8049f382..bcb4eecf 100644
--- a/patches/collateral-evolutions/network/22-multiqueue.patch
+++ b/patches/collateral-evolutions/network/22-multiqueue/INFO
@@ -28,16 +28,3 @@ This patch thus only addresses the lack of select_queue on
kernels older than 2.6.27, naming differences are handled
in compat.
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -1512,6 +1512,10 @@ void ieee80211_xmit(struct ieee80211_sub
- }
- }
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27))
-+ /* Older kernels do not have the select_queue callback */
-+ skb_set_queue_mapping(skb, ieee80211_select_queue(sdata, skb));
-+#endif
- ieee80211_set_qos_hdr(sdata, skb);
- ieee80211_tx(sdata, skb, false, band);
- }
diff --git a/patches/collateral-evolutions/network/22-multiqueue/net_mac80211_tx.c b/patches/collateral-evolutions/network/22-multiqueue/net_mac80211_tx.c
new file mode 100644
index 00000000..6495d252
--- /dev/null
+++ b/patches/collateral-evolutions/network/22-multiqueue/net_mac80211_tx.c
@@ -0,0 +1,13 @@
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -1512,6 +1512,10 @@
+ }
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27))
++ /* Older kernels do not have the select_queue callback */
++ skb_set_queue_mapping(skb, ieee80211_select_queue(sdata, skb));
++#endif
+ ieee80211_set_qos_hdr(sdata, skb);
+ ieee80211_tx(sdata, skb, false, band);
+ }
diff --git a/patches/collateral-evolutions/network/24-pcmcia.patch b/patches/collateral-evolutions/network/24-pcmcia.patch
deleted file mode 100644
index f0c7c295..00000000
--- a/patches/collateral-evolutions/network/24-pcmcia.patch
+++ /dev/null
@@ -1,1414 +0,0 @@
---- a/drivers/bluetooth/bluecard_cs.c
-+++ b/drivers/bluetooth/bluecard_cs.c
-@@ -158,7 +158,12 @@ static void bluecard_detach(struct pcmci
- static void bluecard_activity_led_timeout(u_long arg)
- {
- bluecard_info_t *info = (bluecard_info_t *)arg;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
-+
-
- if (!test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state)))
- return;
-@@ -175,7 +180,11 @@ static void bluecard_activity_led_timeou
-
- static void bluecard_enable_activity_led(bluecard_info_t *info)
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
-
- if (!test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state)))
- return;
-@@ -231,7 +240,11 @@ static void bluecard_write_wakeup(blueca
- }
-
- do {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- unsigned int offset;
- unsigned char command;
- unsigned long ready_bit;
-@@ -378,7 +391,11 @@ static void bluecard_receive(bluecard_in
- return;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- if (test_bit(XMIT_SENDING_READY, &(info->tx_state)))
- bluecard_enable_activity_led(info);
-@@ -507,7 +524,11 @@ static irqreturn_t bluecard_interrupt(in
- if (!test_bit(CARD_READY, &(info->hw_state)))
- return IRQ_HANDLED;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- spin_lock(&(info->lock));
-
-@@ -629,7 +650,11 @@ static int bluecard_hci_open(struct hci_
- return 0;
-
- if (test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state))) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
-
- /* Enable LED */
- outb(0x08 | 0x20, iobase + 0x30);
-@@ -649,7 +674,11 @@ static int bluecard_hci_close(struct hci
- bluecard_hci_flush(hdev);
-
- if (test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state))) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
-
- /* Disable LED */
- outb(0x00, iobase + 0x30);
-@@ -705,7 +734,11 @@ static int bluecard_hci_ioctl(struct hci
-
- static int bluecard_open(bluecard_info_t *info)
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- struct hci_dev *hdev;
- unsigned char id;
-
-@@ -821,7 +854,11 @@ static int bluecard_open(bluecard_info_t
-
- static int bluecard_close(bluecard_info_t *info)
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- struct hci_dev *hdev = info->hdev;
-
- if (!hdev)
-@@ -856,7 +893,18 @@ static int bluecard_probe(struct pcmcia_
- info->p_dev = link;
- link->priv = info;
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+
-+ link->irq.Handler = bluecard_interrupt;
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- link->config_flags |= CONF_ENABLE_IRQ;
-+#else
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+#endif
-
- return bluecard_config(link);
- }
-@@ -873,15 +921,30 @@ static int bluecard_config(struct pcmcia
- bluecard_info_t *info = link->priv;
- int i, n;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- link->config_index = 0x20;
-+#else
-+ link->conf.ConfigIndex = 0x20;
-+#endif
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
- link->resource[0]->end = 64;
- link->io_lines = 6;
-+#else
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1 = 64;
-+ link->io.IOAddrLines = 6;
-+#endif
-
- for (n = 0; n < 0x400; n += 0x40) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- link->resource[0]->start = n ^ 0x300;
- i = pcmcia_request_io(link);
-+#else
-+ link->io.BasePort1 = n ^ 0x300;
-+ i = pcmcia_request_io(link, &link->io);
-+#endif
- if (i == 0)
- break;
- }
-@@ -889,9 +952,15 @@ static int bluecard_config(struct pcmcia
- if (i != 0)
- goto failed;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- i = pcmcia_request_irq(link, bluecard_interrupt);
- if (i != 0)
- goto failed;
-+#else
-+ i = pcmcia_request_irq(link, &link->irq);
-+ if (i != 0)
-+ link->irq.AssignedIRQ = 0;
-+#endif
-
- i = pcmcia_enable_device(link);
- if (i != 0)
-@@ -929,7 +998,13 @@ MODULE_DEVICE_TABLE(pcmcia, bluecard_ids
-
- static struct pcmcia_driver bluecard_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = "bluecard_cs",
-+#else
-+ .drv = {
-+ .name = "bluecard_cs",
-+ },
-+#endif
- .probe = bluecard_probe,
- .remove = bluecard_detach,
- .id_table = bluecard_ids,
---- a/drivers/bluetooth/bt3c_cs.c
-+++ b/drivers/bluetooth/bt3c_cs.c
-@@ -186,7 +186,11 @@ static void bt3c_write_wakeup(bt3c_info_
- return;
-
- do {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- register struct sk_buff *skb;
- int len;
-
-@@ -224,7 +228,11 @@ static void bt3c_receive(bt3c_info_t *in
- return;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- avail = bt3c_read(iobase, 0x7006);
- //printk("bt3c_cs: receiving %d bytes\n", avail);
-@@ -345,7 +353,11 @@ static irqreturn_t bt3c_interrupt(int ir
- /* our irq handler is shared */
- return IRQ_NONE;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- spin_lock(&(info->lock));
-
-@@ -473,7 +485,11 @@ static int bt3c_load_firmware(bt3c_info_
- unsigned int iobase, size, addr, fcs, tmp;
- int i, err = 0;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- /* Reset */
- bt3c_io_write(iobase, 0x8040, 0x0404);
-@@ -645,8 +661,27 @@ static int bt3c_probe(struct pcmcia_devi
- info->p_dev = link;
- link->priv = info;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_VPP |
- CONF_AUTO_SET_IO;
-+#else
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
-+ link->resource[0]->end = 8;
-+#else
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1= 8;
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+
-+ link->irq.Handler = bt3c_interrupt;
-+#endif
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+#endif
-
- return bt3c_config(link);
- }
-@@ -657,6 +692,7 @@ static void bt3c_detach(struct pcmcia_de
- bt3c_release(link);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- static int bt3c_check_config(struct pcmcia_device *p_dev, void *priv_data)
- {
- int *try = priv_data;
-@@ -695,6 +731,63 @@ static int bt3c_check_config_notpicky(st
- }
- return -ENODEV;
- }
-+#else
-+static int bt3c_check_config(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cf,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+ unsigned long try = (unsigned long) priv_data;
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+#endif
-+
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
-+ (cf->io.win[0].base != 0)) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->resource[0]->start = cf->io.win[0].base;
-+ if (!pcmcia_request_io(p_dev))
-+#else
-+ p_dev->io.BasePort1 = cf->io.win[0].base;
-+ p_dev->io.IOAddrLines = (try == 0) ? 16 :
-+ cf->io.flags & CISTPL_IO_LINES_MASK;
-+ if (!pcmcia_request_io(p_dev, &p_dev->io))
-+#endif
-+ return 0;
-+ }
-+ return -ENODEV;
-+}
-+
-+static int bt3c_check_config_notpicky(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cf,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+ static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ int j;
-+
-+ if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ for (j = 0; j < 5; j++) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->resource[0]->start = base[j];
-+ p_dev->io_lines = base[j] ? 16 : 3;
-+ if (!pcmcia_request_io(p_dev))
-+#else
-+ p_dev->io.BasePort1 = base[j];
-+ p_dev->io.IOAddrLines = base[j] ? 16 : 3;
-+ if (!pcmcia_request_io(p_dev, &p_dev->io))
-+#endif
-+ return 0;
-+ }
-+ }
-+ return -ENODEV;
-+}
-+#endif
-
- static int bt3c_config(struct pcmcia_device *link)
- {
-@@ -718,9 +811,15 @@ static int bt3c_config(struct pcmcia_dev
- goto failed;
-
- found_port:
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- i = pcmcia_request_irq(link, &bt3c_interrupt);
- if (i != 0)
- goto failed;
-+#else
-+ i = pcmcia_request_irq(link, &link->irq);
-+ if (i != 0)
-+ link->irq.AssignedIRQ = 0;
-+#endif
-
- i = pcmcia_enable_device(link);
- if (i != 0)
-@@ -755,7 +854,13 @@ MODULE_DEVICE_TABLE(pcmcia, bt3c_ids);
-
- static struct pcmcia_driver bt3c_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = "bt3c_cs",
-+#else
-+ .drv = {
-+ .name = "bt3c_cs",
-+ },
-+#endif
- .probe = bt3c_probe,
- .remove = bt3c_detach,
- .id_table = bt3c_ids,
---- a/drivers/bluetooth/btuart_cs.c
-+++ b/drivers/bluetooth/btuart_cs.c
-@@ -140,7 +140,11 @@ static void btuart_write_wakeup(btuart_i
- }
-
- do {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- register struct sk_buff *skb;
- int len;
-
-@@ -181,7 +185,11 @@ static void btuart_receive(btuart_info_t
- return;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- do {
- info->hdev->stat.byte_rx++;
-@@ -295,7 +303,11 @@ static irqreturn_t btuart_interrupt(int
- /* our irq handler is shared */
- return IRQ_NONE;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- spin_lock(&(info->lock));
-
-@@ -352,7 +364,11 @@ static void btuart_change_speed(btuart_i
- return;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- spin_lock_irqsave(&(info->lock), flags);
-
-@@ -471,7 +487,11 @@ static int btuart_hci_ioctl(struct hci_d
- static int btuart_open(btuart_info_t *info)
- {
- unsigned long flags;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- struct hci_dev *hdev;
-
- spin_lock_init(&(info->lock));
-@@ -538,7 +558,11 @@ static int btuart_open(btuart_info_t *in
- static int btuart_close(btuart_info_t *info)
- {
- unsigned long flags;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- struct hci_dev *hdev = info->hdev;
-
- if (!hdev)
-@@ -574,8 +598,27 @@ static int btuart_probe(struct pcmcia_de
- info->p_dev = link;
- link->priv = info;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_VPP |
- CONF_AUTO_SET_IO;
-+#else
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
-+ link->resource[0]->end = 8;
-+#else
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1= 8;
-+#endif
-+
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+
-+ link->irq.Handler = btuart_interrupt;
-+#endif
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+#endif
-
- return btuart_config(link);
- }
-@@ -586,6 +629,7 @@ static void btuart_detach(struct pcmcia_
- btuart_release(link);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- static int btuart_check_config(struct pcmcia_device *p_dev, void *priv_data)
- {
- int *try = priv_data;
-@@ -624,6 +668,63 @@ static int btuart_check_config_notpicky(
- }
- return -ENODEV;
- }
-+#else
-+static int btuart_check_config(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cf,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+ int *try = priv_data;
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
-+#endif
-+
-+ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
-+ (cf->io.win[0].base != 0)) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->resource[0]->start = cf->io.win[0].base;
-+ if (!pcmcia_request_io(p_dev))
-+#else
-+ p_dev->io.BasePort1 = cf->io.win[0].base;
-+ p_dev->io.IOAddrLines = (*try == 0) ? 16 :
-+ cf->io.flags & CISTPL_IO_LINES_MASK;
-+ if (!pcmcia_request_io(p_dev, &p_dev->io))
-+#endif
-+ return 0;
-+ }
-+ return -ENODEV;
-+}
-+
-+static int btuart_check_config_notpicky(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cf,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+ static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
-+ int j;
-+
-+ if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
-+ for (j = 0; j < 5; j++) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->resource[0]->start = base[j];
-+ p_dev->io_lines = base[j] ? 16 : 3;
-+ if (!pcmcia_request_io(p_dev))
-+#else
-+ p_dev->io.BasePort1 = base[j];
-+ p_dev->io.IOAddrLines = base[j] ? 16 : 3;
-+ if (!pcmcia_request_io(p_dev, &p_dev->io))
-+#endif
-+ return 0;
-+ }
-+ }
-+ return -ENODEV;
-+}
-+#endif
-
- static int btuart_config(struct pcmcia_device *link)
- {
-@@ -647,9 +748,15 @@ static int btuart_config(struct pcmcia_d
- goto failed;
-
- found_port:
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- i = pcmcia_request_irq(link, btuart_interrupt);
- if (i != 0)
- goto failed;
-+#else
-+ i = pcmcia_request_irq(link, &link->irq);
-+ if (i != 0)
-+ link->irq.AssignedIRQ = 0;
-+#endif
-
- i = pcmcia_enable_device(link);
- if (i != 0)
-@@ -683,7 +790,13 @@ MODULE_DEVICE_TABLE(pcmcia, btuart_ids);
-
- static struct pcmcia_driver btuart_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = "btuart_cs",
-+#else
-+ .drv = {
-+ .name = "btuart_cs",
-+ },
-+#endif
- .probe = btuart_probe,
- .remove = btuart_detach,
- .id_table = btuart_ids,
---- a/drivers/bluetooth/dtl1_cs.c
-+++ b/drivers/bluetooth/dtl1_cs.c
-@@ -144,7 +144,11 @@ static void dtl1_write_wakeup(dtl1_info_
- }
-
- do {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- register struct sk_buff *skb;
- int len;
-
-@@ -209,7 +213,11 @@ static void dtl1_receive(dtl1_info_t *in
- return;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- do {
- info->hdev->stat.byte_rx++;
-@@ -296,7 +304,11 @@ static irqreturn_t dtl1_interrupt(int ir
- /* our irq handler is shared */
- return IRQ_NONE;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- iobase = info->p_dev->resource[0]->start;
-+#else
-+ iobase = info->p_dev->io.BasePort1;
-+#endif
-
- spin_lock(&(info->lock));
-
-@@ -451,7 +463,11 @@ static int dtl1_hci_ioctl(struct hci_dev
- static int dtl1_open(dtl1_info_t *info)
- {
- unsigned long flags;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- struct hci_dev *hdev;
-
- spin_lock_init(&(info->lock));
-@@ -495,8 +511,13 @@ static int dtl1_open(dtl1_info_t *info)
- outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
- outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- info->ri_latch = inb(info->p_dev->resource[0]->start + UART_MSR)
- & UART_MSR_RI;
-+#else
-+ info->ri_latch = inb(info->p_dev->io.BasePort1 + UART_MSR)
-+ & UART_MSR_RI;
-+#endif
-
- /* Turn on interrupts */
- outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
-@@ -521,7 +542,11 @@ static int dtl1_open(dtl1_info_t *info)
- static int dtl1_close(dtl1_info_t *info)
- {
- unsigned long flags;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- unsigned int iobase = info->p_dev->resource[0]->start;
-+#else
-+ unsigned int iobase = info->p_dev->io.BasePort1;
-+#endif
- struct hci_dev *hdev = info->hdev;
-
- if (!hdev)
-@@ -557,7 +582,24 @@ static int dtl1_probe(struct pcmcia_devi
- info->p_dev = link;
- link->priv = info;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
-+#else
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
-+ link->resource[0]->end = 8;
-+#else
-+ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ link->io.NumPorts1= 8;
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+ link->irq.Handler = dtl1_interrupt;
-+#endif
-+
-+ link->conf.Attributes = CONF_ENABLE_IRQ;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+#endif
-
- return dtl1_config(link);
- }
-@@ -571,6 +613,7 @@ static void dtl1_detach(struct pcmcia_de
- pcmcia_disable_device(link);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- static int dtl1_confcheck(struct pcmcia_device *p_dev, void *priv_data)
- {
- if ((p_dev->resource[1]->end) || (p_dev->resource[1]->end < 8))
-@@ -581,6 +624,29 @@ static int dtl1_confcheck(struct pcmcia_
-
- return pcmcia_request_io(p_dev);
- }
-+#else
-+static int dtl1_confcheck(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cf,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+ if ((cf->io.nwin != 1) || (cf->io.win[0].len <= 8))
-+ return -ENODEV;
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->resource[0]->start = cf->io.win[0].base;
-+ p_dev->resource[0]->end = cf->io.win[0].len; /*yo */
-+ p_dev->io_lines = cf->io.flags & CISTPL_IO_LINES_MASK;
-+ return pcmcia_request_io(p_dev);
-+#else
-+ p_dev->io.BasePort1 = cf->io.win[0].base;
-+ p_dev->io.NumPorts1 = cf->io.win[0].len; /*yo */
-+ p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
-+ return pcmcia_request_io(p_dev, &p_dev->io);
-+#endif
-+}
-+#endif
-
- static int dtl1_config(struct pcmcia_device *link)
- {
-@@ -588,14 +654,24 @@ static int dtl1_config(struct pcmcia_dev
- int ret;
-
- /* Look for a generic full-sized window */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- link->resource[0]->end = 8;
-+#else
-+ link->io.NumPorts1 = 8;
-+#endif
- ret = pcmcia_loop_config(link, dtl1_confcheck, NULL);
- if (ret)
- goto failed;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ret = pcmcia_request_irq(link, dtl1_interrupt);
- if (ret)
- goto failed;
-+#else
-+ ret = pcmcia_request_irq(link, &link->irq);
-+ if (ret != 0)
-+ link->irq.AssignedIRQ = 0;
-+#endif
-
- ret = pcmcia_enable_device(link);
- if (ret)
-@@ -623,7 +699,13 @@ MODULE_DEVICE_TABLE(pcmcia, dtl1_ids);
-
- static struct pcmcia_driver dtl1_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = "dtl1_cs",
-+#else
-+ .drv = {
-+ .name = "dtl1_cs",
-+ },
-+#endif
- .probe = dtl1_probe,
- .remove = dtl1_detach,
- .id_table = dtl1_ids,
---- a/drivers/net/wireless/b43/pcmcia.c
-+++ b/drivers/net/wireless/b43/pcmcia.c
-@@ -63,6 +63,9 @@ static int b43_pcmcia_resume(struct pcmc
- static int b43_pcmcia_probe(struct pcmcia_device *dev)
- {
- struct ssb_bus *ssb;
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+ win_req_t win;
-+#endif
- int err = -ENOMEM;
- int res = 0;
-
-@@ -72,6 +75,7 @@ static int b43_pcmcia_probe(struct pcmci
-
- err = -ENODEV;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- dev->config_flags |= CONF_ENABLE_IRQ;
-
- dev->resource[2]->flags |= WIN_ENABLE | WIN_DATA_WIDTH_16 |
-@@ -79,21 +83,46 @@ static int b43_pcmcia_probe(struct pcmci
- dev->resource[2]->start = 0;
- dev->resource[2]->end = SSB_CORE_SIZE;
- res = pcmcia_request_window(dev, dev->resource[2], 250);
-+#else
-+ dev->conf.Attributes = CONF_ENABLE_IRQ;
-+ dev->conf.IntType = INT_MEMORY_AND_IO;
-+
-+ win.Attributes = WIN_ENABLE | WIN_DATA_WIDTH_16 |
-+ WIN_USE_WAIT;
-+ win.Base = 0;
-+ win.Size = SSB_CORE_SIZE;
-+ win.AccessSpeed = 250;
-+ res = pcmcia_request_window(dev, &win, &dev->win);
-+#endif
- if (res != 0)
- goto err_kfree_ssb;
--
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- res = pcmcia_map_mem_page(dev, dev->resource[2], 0);
-+#else
-+ res = pcmcia_map_mem_page(dev, dev->win, 0);
-+#endif
- if (res != 0)
- goto err_disable;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- if (!dev->irq)
-+#else
-+ dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+ dev->irq.Handler = NULL; /* The handler is registered later. */
-+ res = pcmcia_request_irq(dev, &dev->irq);
-+ if (res != 0)
-+#endif
- goto err_disable;
-
- res = pcmcia_enable_device(dev);
- if (res != 0)
- goto err_disable;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- err = ssb_bus_pcmciabus_register(ssb, dev, dev->resource[2]->start);
-+#else
-+ err = ssb_bus_pcmciabus_register(ssb, dev, win.Base);
-+#endif
- if (err)
- goto err_disable;
- dev->priv = ssb;
-@@ -122,7 +151,13 @@ static void b43_pcmcia_remove(struct pcm
-
- static struct pcmcia_driver b43_pcmcia_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = "b43-pcmcia",
-+#else
-+ .drv = {
-+ .name = "b43-pcmcia",
-+ },
-+#endif
- .id_table = b43_pcmcia_tbl,
- .probe = b43_pcmcia_probe,
- .remove = b43_pcmcia_remove,
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -757,7 +757,11 @@ static void if_cs_prog_firmware(struct l
- goto out;
-
- /* Now actually get the IRQ */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ret = request_irq(card->p_dev->irq, if_cs_interrupt,
-+#else
-+ ret = request_irq(card->p_dev->irq.AssignedIRQ, if_cs_interrupt,
-+#endif
- IRQF_SHARED, DRV_NAME, card);
- if (ret) {
- pr_err("error in request_irq\n");
-@@ -775,7 +779,11 @@ static void if_cs_prog_firmware(struct l
- priv->fw_ready = 1;
- if (lbs_start_card(priv) != 0) {
- pr_err("could not activate card\n");
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- free_irq(card->p_dev->irq, card);
-+#else
-+ free_irq(card->p_dev->irq.AssignedIRQ, card);
-+#endif
- }
-
- out:
-@@ -824,7 +832,11 @@ static void if_cs_release(struct pcmcia_
-
- lbs_deb_enter(LBS_DEB_CS);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- free_irq(p_dev->irq, card);
-+#else
-+ free_irq(p_dev->irq.AssignedIRQ, card);
-+#endif
- pcmcia_disable_device(p_dev);
- if (card->iobase)
- ioport_unmap(card->iobase);
-@@ -832,7 +844,7 @@ static void if_cs_release(struct pcmcia_
- lbs_deb_leave(LBS_DEB_CS);
- }
-
--
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- static int if_cs_ioprobe(struct pcmcia_device *p_dev, void *priv_data)
- {
- p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
-@@ -842,9 +854,39 @@ static int if_cs_ioprobe(struct pcmcia_d
- pr_err("wrong CIS (check number of IO windows)\n");
- return -ENODEV;
- }
-+#else
-+static int if_cs_ioprobe(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cfg,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
-+ p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO;
-+ p_dev->resource[0]->start = cfg->io.win[0].base;
-+ p_dev->resource[0]->end = cfg->io.win[0].len;
-+#else
-+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
-+ p_dev->io.BasePort1 = cfg->io.win[0].base;
-+ p_dev->io.NumPorts1 = cfg->io.win[0].len;
-+#endif
-+
-+ /* Do we need to allocate an interrupt? */
-+ p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
-+
-+ /* IO window settings */
-+ if (cfg->io.nwin != 1) {
-+ pr_err("wrong CIS (check number of IO windows)\n");
-+ return -ENODEV;
-+ }
-+#endif
-
- /* This reserves IO space but doesn't actually enable it */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- return pcmcia_request_io(p_dev);
-+#else
-+ return pcmcia_request_io(p_dev, &p_dev->io);
-+#endif
- }
-
- static int if_cs_probe(struct pcmcia_device *p_dev)
-@@ -863,7 +905,16 @@ static int if_cs_probe(struct pcmcia_dev
- card->p_dev = p_dev;
- p_dev->priv = card;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- p_dev->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
-+#else
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+ p_dev->irq.Handler = NULL;
-+#endif
-+ p_dev->conf.Attributes = 0;
-+ p_dev->conf.IntType = INT_MEMORY_AND_IO;
-+#endif
-
- if (pcmcia_loop_config(p_dev, if_cs_ioprobe, NULL)) {
- pr_err("error in pcmcia_loop_config\n");
-@@ -875,12 +926,26 @@ static int if_cs_probe(struct pcmcia_dev
- * a handler to the interrupt, unless the 'Handler' member of
- * the irq structure is initialized.
- */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- if (!p_dev->irq)
- goto out1;
-+#else
-+ if (p_dev->conf.Attributes & CONF_ENABLE_IRQ) {
-+ ret = pcmcia_request_irq(p_dev, &p_dev->irq);
-+ if (ret) {
-+ pr_err("error in pcmcia_request_irq\n");
-+ goto out1;
-+ }
-+ }
-+#endif
-
- /* Initialize io access */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- card->iobase = ioport_map(p_dev->resource[0]->start,
- resource_size(p_dev->resource[0]));
-+#else
-+ card->iobase = ioport_map(p_dev->io.BasePort1, p_dev->io.NumPorts1);
-+#endif
- if (!card->iobase) {
- pr_err("error in ioport_map\n");
- ret = -EIO;
-@@ -894,7 +959,17 @@ static int if_cs_probe(struct pcmcia_dev
- }
-
- /* Finally, report what we've done */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- lbs_deb_cs("irq %d, io %pR", p_dev->irq, p_dev->resource[0]);
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+ lbs_deb_cs("irq %d, io 0x%04x-0x%04x\n",
-+ p_dev->irq, p_dev->io.BasePort1,
-+ p_dev->io.BasePort1 + p_dev->io.NumPorts1 - 1);
-+#else
-+ lbs_deb_cs("irq %d, io 0x%04x-0x%04x\n",
-+ p_dev->irq.AssignedIRQ, p_dev->io.BasePort1,
-+ p_dev->io.BasePort1 + p_dev->io.NumPorts1 - 1);
-+#endif
-
- /*
- * Most of the libertas cards can do unaligned register access, but some
-@@ -1001,7 +1076,13 @@ MODULE_DEVICE_TABLE(pcmcia, if_cs_ids);
-
- static struct pcmcia_driver lbs_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = DRV_NAME,
-+#else
-+ .drv = {
-+ .name = DRV_NAME,
-+ },
-+#endif
- .probe = if_cs_probe,
- .remove = if_cs_detach,
- .id_table = if_cs_ids,
---- a/drivers/net/wireless/orinoco/orinoco_cs.c
-+++ b/drivers/net/wireless/orinoco/orinoco_cs.c
-@@ -78,7 +78,11 @@ orinoco_cs_hard_reset(struct orinoco_pri
- /* We need atomic ops here, because we're not holding the lock */
- set_bit(0, &card->hard_reset_in_progress);
-
-+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)
-+ err = pcmcia_reset_card(link, NULL);
-+#else
- err = pcmcia_reset_card(link->socket);
-+#endif
- if (err)
- return err;
-
-@@ -108,6 +112,16 @@ orinoco_cs_probe(struct pcmcia_device *l
- card->p_dev = link;
- link->priv = priv;
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ /* Interrupt setup */
-+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+ link->irq.Handler = orinoco_interrupt;
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+ link->conf.Attributes = 0;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+#endif
-+
- return orinoco_cs_config(link);
- } /* orinoco_cs_attach */
-
-@@ -122,6 +136,7 @@ static void orinoco_cs_detach(struct pcm
- free_orinocodev(priv);
- } /* orinoco_cs_detach */
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- static int orinoco_cs_config_check(struct pcmcia_device *p_dev, void *priv_data)
- {
- if (p_dev->config_index == 0)
-@@ -129,6 +144,98 @@ static int orinoco_cs_config_check(struc
-
- return pcmcia_request_io(p_dev);
- };
-+#else
-+static int orinoco_cs_config_check(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cfg,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+ if (cfg->index == 0)
-+ goto next_entry;
-+
-+ /* Use power settings for Vcc and Vpp if present */
-+ /* Note that the CIS values need to be rescaled */
-+ if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) {
-+ if (vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000) {
-+ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
-+ __func__, vcc,
-+ cfg->vcc.param[CISTPL_POWER_VNOM] / 10000);
-+ if (!ignore_cis_vcc)
-+ goto next_entry;
-+ }
-+ } else if (dflt->vcc.present & (1 << CISTPL_POWER_VNOM)) {
-+ if (vcc != dflt->vcc.param[CISTPL_POWER_VNOM] / 10000) {
-+ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
-+ __func__, vcc,
-+ dflt->vcc.param[CISTPL_POWER_VNOM] / 10000);
-+ if (!ignore_cis_vcc)
-+ goto next_entry;
-+ }
-+ }
-+
-+ if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ p_dev->conf.Vpp =
-+ cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ else if (dflt->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ p_dev->conf.Vpp =
-+ dflt->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+
-+ /* Do we need to allocate an interrupt? */
-+ p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
-+
-+ /* IO window settings */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ p_dev->resource[0]->end = p_dev->resource[1]->end = 0;
-+#else
-+ p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0;
-+#endif
-+ if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) {
-+ cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ p_dev->io_lines = io->flags & CISTPL_IO_LINES_MASK;
-+ p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
-+ p_dev->resource[0]->flags |=
-+ pcmcia_io_cfg_data_width(io->flags);
-+ p_dev->resource[0]->start = io->win[0].base;
-+ p_dev->resource[0]->end = io->win[0].len;
-+#else
-+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
-+ if (!(io->flags & CISTPL_IO_8BIT))
-+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
-+ if (!(io->flags & CISTPL_IO_16BIT))
-+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ p_dev->io.IOAddrLines = io->flags & CISTPL_IO_LINES_MASK;
-+ p_dev->io.BasePort1 = io->win[0].base;
-+ p_dev->io.NumPorts1 = io->win[0].len;
-+#endif
-+ if (io->nwin > 1) {
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ p_dev->resource[1]->flags = p_dev->resource[0]->flags;
-+ p_dev->resource[1]->start = io->win[1].base;
-+ p_dev->resource[1]->end = io->win[1].len;
-+#else
-+ p_dev->io.Attributes2 = p_dev->io.Attributes1;
-+ p_dev->io.BasePort2 = io->win[1].base;
-+ p_dev->io.NumPorts2 = io->win[1].len;
-+#endif
-+ }
-+
-+ /* This reserves IO space but doesn't actually enable it */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ if (pcmcia_request_io(p_dev) != 0)
-+#else
-+ if (pcmcia_request_io(p_dev, &p_dev->io) != 0)
-+#endif
-+ goto next_entry;
-+ }
-+ return 0;
-+
-+next_entry:
-+ pcmcia_disable_device(p_dev);
-+ return -ENODEV;
-+};
-+#endif
-
- static int
- orinoco_cs_config(struct pcmcia_device *link)
-@@ -138,10 +245,12 @@ orinoco_cs_config(struct pcmcia_device *
- int ret;
- void __iomem *mem;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- link->config_flags |= CONF_AUTO_SET_VPP | CONF_AUTO_CHECK_VCC |
- CONF_AUTO_SET_IO | CONF_ENABLE_IRQ;
- if (ignore_cis_vcc)
- link->config_flags &= ~CONF_AUTO_CHECK_VCC;
-+#endif
- ret = pcmcia_loop_config(link, orinoco_cs_config_check, NULL);
- if (ret) {
- if (!ignore_cis_vcc)
-@@ -151,8 +260,12 @@ orinoco_cs_config(struct pcmcia_device *
- goto failed;
- }
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
- mem = ioport_map(link->resource[0]->start,
- resource_size(link->resource[0]));
-+#else
-+ mem = ioport_map(link->io.BasePort1, link->io.NumPorts1);
-+#endif
- if (!mem)
- goto failed;
-
-@@ -161,7 +274,11 @@ orinoco_cs_config(struct pcmcia_device *
- * called. */
- hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ret = pcmcia_request_irq(link, orinoco_interrupt);
-+#else
-+ ret = pcmcia_request_irq(link, &link->irq);
-+#endif
- if (ret)
- goto failed;
-
-@@ -176,8 +293,16 @@ orinoco_cs_config(struct pcmcia_device *
- }
-
- /* Register an interface with the stack */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- if (orinoco_if_add(priv, link->resource[0]->start,
- link->irq, NULL) != 0) {
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+ if (orinoco_if_add(priv, link->io.BasePort1,
-+ link->irq, NULL) != 0) {
-+#else
-+ if (orinoco_if_add(priv, link->io.BasePort1,
-+ link->irq.AssignedIRQ, NULL) != 0) {
-+#endif
- printk(KERN_ERR PFX "orinoco_if_add() failed\n");
- goto failed;
- }
-@@ -331,7 +456,13 @@ MODULE_DEVICE_TABLE(pcmcia, orinoco_cs_i
-
- static struct pcmcia_driver orinoco_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = DRIVER_NAME,
-+#else
-+ .drv = {
-+ .name = DRIVER_NAME,
-+ },
-+#endif
- .probe = orinoco_cs_probe,
- .remove = orinoco_cs_detach,
- .id_table = orinoco_cs_ids,
---- a/drivers/net/wireless/orinoco/spectrum_cs.c
-+++ b/drivers/net/wireless/orinoco/spectrum_cs.c
-@@ -170,6 +170,16 @@ spectrum_cs_probe(struct pcmcia_device *
- card->p_dev = link;
- link->priv = priv;
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ /* Interrupt setup */
-+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
-+ link->irq.Handler = orinoco_interrupt;
-+#endif
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
-+ link->conf.Attributes = 0;
-+ link->conf.IntType = INT_MEMORY_AND_IO;
-+#endif
-+
- return spectrum_cs_config(link);
- } /* spectrum_cs_attach */
-
-@@ -184,6 +194,7 @@ static void spectrum_cs_detach(struct pc
- free_orinocodev(priv);
- } /* spectrum_cs_detach */
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- static int spectrum_cs_config_check(struct pcmcia_device *p_dev,
- void *priv_data)
- {
-@@ -192,6 +203,98 @@ static int spectrum_cs_config_check(stru
-
- return pcmcia_request_io(p_dev);
- };
-+#else
-+static int spectrum_cs_config_check(struct pcmcia_device *p_dev,
-+ cistpl_cftable_entry_t *cfg,
-+ cistpl_cftable_entry_t *dflt,
-+ unsigned int vcc,
-+ void *priv_data)
-+{
-+ if (cfg->index == 0)
-+ goto next_entry;
-+
-+ /* Use power settings for Vcc and Vpp if present */
-+ /* Note that the CIS values need to be rescaled */
-+ if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) {
-+ if (vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000) {
-+ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
-+ __func__, vcc,
-+ cfg->vcc.param[CISTPL_POWER_VNOM] / 10000);
-+ if (!ignore_cis_vcc)
-+ goto next_entry;
-+ }
-+ } else if (dflt->vcc.present & (1 << CISTPL_POWER_VNOM)) {
-+ if (vcc != dflt->vcc.param[CISTPL_POWER_VNOM] / 10000) {
-+ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
-+ __func__, vcc,
-+ dflt->vcc.param[CISTPL_POWER_VNOM] / 10000);
-+ if (!ignore_cis_vcc)
-+ goto next_entry;
-+ }
-+ }
-+
-+ if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ p_dev->conf.Vpp =
-+ cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+ else if (dflt->vpp1.present & (1 << CISTPL_POWER_VNOM))
-+ p_dev->conf.Vpp =
-+ dflt->vpp1.param[CISTPL_POWER_VNOM] / 10000;
-+
-+ /* Do we need to allocate an interrupt? */
-+ p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
-+
-+ /* IO window settings */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ p_dev->resource[0]->end = p_dev->resource[1]->end = 0;
-+#else
-+ p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0;
-+#endif
-+ if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) {
-+ cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ p_dev->io_lines = io->flags & CISTPL_IO_LINES_MASK;
-+ p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
-+ p_dev->resource[0]->flags |=
-+ pcmcia_io_cfg_data_width(io->flags);
-+ p_dev->resource[0]->start = io->win[0].base;
-+ p_dev->resource[0]->end = io->win[0].len;
-+#else
-+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
-+ if (!(io->flags & CISTPL_IO_8BIT))
-+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
-+ if (!(io->flags & CISTPL_IO_16BIT))
-+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-+ p_dev->io.IOAddrLines = io->flags & CISTPL_IO_LINES_MASK;
-+ p_dev->io.BasePort1 = io->win[0].base;
-+ p_dev->io.NumPorts1 = io->win[0].len;
-+#endif
-+ if (io->nwin > 1) {
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ p_dev->resource[1]->flags = p_dev->resource[0]->flags;
-+ p_dev->resource[1]->start = io->win[1].base;
-+ p_dev->resource[1]->end = io->win[1].len;
-+#else
-+ p_dev->io.Attributes2 = p_dev->io.Attributes1;
-+ p_dev->io.BasePort2 = io->win[1].base;
-+ p_dev->io.NumPorts2 = io->win[1].len;
-+#endif
-+ }
-+
-+ /* This reserves IO space but doesn't actually enable it */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+ if (pcmcia_request_io(p_dev) != 0)
-+#else
-+ if (pcmcia_request_io(p_dev, &p_dev->io) != 0)
-+#endif
-+ goto next_entry;
-+ }
-+ return 0;
-+
-+next_entry:
-+ pcmcia_disable_device(p_dev);
-+ return -ENODEV;
-+};
-+#endif
-
- static int
- spectrum_cs_config(struct pcmcia_device *link)
-@@ -201,10 +304,12 @@ spectrum_cs_config(struct pcmcia_device
- int ret;
- void __iomem *mem;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- link->config_flags |= CONF_AUTO_SET_VPP | CONF_AUTO_CHECK_VCC |
- CONF_AUTO_SET_IO | CONF_ENABLE_IRQ;
- if (ignore_cis_vcc)
- link->config_flags &= ~CONF_AUTO_CHECK_VCC;
-+#endif
- ret = pcmcia_loop_config(link, spectrum_cs_config_check, NULL);
- if (ret) {
- if (!ignore_cis_vcc)
-@@ -214,8 +319,12 @@ spectrum_cs_config(struct pcmcia_device
- goto failed;
- }
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
- mem = ioport_map(link->resource[0]->start,
- resource_size(link->resource[0]));
-+#else
-+ mem = ioport_map(link->io.BasePort1, link->io.NumPorts1);
-+#endif
- if (!mem)
- goto failed;
-
-@@ -225,7 +334,11 @@ spectrum_cs_config(struct pcmcia_device
- hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING);
- hw->eeprom_pda = true;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ret = pcmcia_request_irq(link, orinoco_interrupt);
-+#else
-+ ret = pcmcia_request_irq(link, &link->irq);
-+#endif
- if (ret)
- goto failed;
-
-@@ -244,8 +357,16 @@ spectrum_cs_config(struct pcmcia_device
- }
-
- /* Register an interface with the stack */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- if (orinoco_if_add(priv, link->resource[0]->start,
- link->irq, NULL) != 0) {
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+ if (orinoco_if_add(priv, link->io.BasePort1,
-+ link->irq, NULL) != 0) {
-+#else
-+ if (orinoco_if_add(priv, link->io.BasePort1,
-+ link->irq.AssignedIRQ, NULL) != 0) {
-+#endif
- printk(KERN_ERR PFX "orinoco_if_add() failed\n");
- goto failed;
- }
-@@ -311,7 +432,13 @@ MODULE_DEVICE_TABLE(pcmcia, spectrum_cs_
-
- static struct pcmcia_driver orinoco_driver = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- .name = DRIVER_NAME,
-+#else
-+ .drv = {
-+ .name = DRIVER_NAME,
-+ },
-+#endif
- .probe = spectrum_cs_probe,
- .remove = spectrum_cs_detach,
- .suspend = spectrum_cs_suspend,
---- a/drivers/ssb/main.c
-+++ b/drivers/ssb/main.c
-@@ -517,7 +517,11 @@ static int ssb_devices_register(struct s
- break;
- case SSB_BUSTYPE_PCMCIA:
- #ifdef CONFIG_SSB_PCMCIAHOST
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- sdev->irq = bus->host_pcmcia->irq;
-+#else
-+ sdev->irq = bus->host_pcmcia->irq.AssignedIRQ;
-+#endif
- dev->parent = &bus->host_pcmcia->dev;
- #endif
- break;
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bluecard_cs.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bluecard_cs.c
new file mode 100644
index 00000000..23b80895
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bluecard_cs.c
@@ -0,0 +1,191 @@
+--- a/drivers/bluetooth/bluecard_cs.c
++++ b/drivers/bluetooth/bluecard_cs.c
+@@ -158,7 +158,12 @@
+ static void bluecard_activity_led_timeout(u_long arg)
+ {
+ bluecard_info_t *info = (bluecard_info_t *)arg;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
++
+
+ if (!test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state)))
+ return;
+@@ -175,7 +180,11 @@
+
+ static void bluecard_enable_activity_led(bluecard_info_t *info)
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+
+ if (!test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state)))
+ return;
+@@ -231,7 +240,11 @@
+ }
+
+ do {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ unsigned int offset;
+ unsigned char command;
+ unsigned long ready_bit;
+@@ -378,7 +391,11 @@
+ return;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ if (test_bit(XMIT_SENDING_READY, &(info->tx_state)))
+ bluecard_enable_activity_led(info);
+@@ -507,7 +524,11 @@
+ if (!test_bit(CARD_READY, &(info->hw_state)))
+ return IRQ_HANDLED;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ spin_lock(&(info->lock));
+
+@@ -629,7 +650,11 @@
+ return 0;
+
+ if (test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state))) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+
+ /* Enable LED */
+ outb(0x08 | 0x20, iobase + 0x30);
+@@ -649,7 +674,11 @@
+ bluecard_hci_flush(hdev);
+
+ if (test_bit(CARD_HAS_PCCARD_ID, &(info->hw_state))) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+
+ /* Disable LED */
+ outb(0x00, iobase + 0x30);
+@@ -705,7 +734,11 @@
+
+ static int bluecard_open(bluecard_info_t *info)
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ struct hci_dev *hdev;
+ unsigned char id;
+
+@@ -821,7 +854,11 @@
+
+ static int bluecard_close(bluecard_info_t *info)
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ struct hci_dev *hdev = info->hdev;
+
+ if (!hdev)
+@@ -856,7 +893,18 @@
+ info->p_dev = link;
+ link->priv = info;
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++
++ link->irq.Handler = bluecard_interrupt;
++#endif
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ link->config_flags |= CONF_ENABLE_IRQ;
++#else
++ link->conf.Attributes = CONF_ENABLE_IRQ;
++ link->conf.IntType = INT_MEMORY_AND_IO;
++#endif
+
+ return bluecard_config(link);
+ }
+@@ -873,15 +921,30 @@
+ bluecard_info_t *info = link->priv;
+ int i, n;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ link->config_index = 0x20;
++#else
++ link->conf.ConfigIndex = 0x20;
++#endif
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
+ link->resource[0]->end = 64;
+ link->io_lines = 6;
++#else
++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
++ link->io.NumPorts1 = 64;
++ link->io.IOAddrLines = 6;
++#endif
+
+ for (n = 0; n < 0x400; n += 0x40) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ link->resource[0]->start = n ^ 0x300;
+ i = pcmcia_request_io(link);
++#else
++ link->io.BasePort1 = n ^ 0x300;
++ i = pcmcia_request_io(link, &link->io);
++#endif
+ if (i == 0)
+ break;
+ }
+@@ -889,9 +952,15 @@
+ if (i != 0)
+ goto failed;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ i = pcmcia_request_irq(link, bluecard_interrupt);
+ if (i != 0)
+ goto failed;
++#else
++ i = pcmcia_request_irq(link, &link->irq);
++ if (i != 0)
++ link->irq.AssignedIRQ = 0;
++#endif
+
+ i = pcmcia_enable_device(link);
+ if (i != 0)
+@@ -929,7 +998,13 @@
+
+ static struct pcmcia_driver bluecard_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = "bluecard_cs",
++#else
++ .drv = {
++ .name = "bluecard_cs",
++ },
++#endif
+ .probe = bluecard_probe,
+ .remove = bluecard_detach,
+ .id_table = bluecard_ids,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bt3c_cs.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bt3c_cs.c
new file mode 100644
index 00000000..ac7ef633
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_bt3c_cs.c
@@ -0,0 +1,180 @@
+--- a/drivers/bluetooth/bt3c_cs.c
++++ b/drivers/bluetooth/bt3c_cs.c
+@@ -186,7 +186,11 @@
+ return;
+
+ do {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ register struct sk_buff *skb;
+ int len;
+
+@@ -224,7 +228,11 @@
+ return;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ avail = bt3c_read(iobase, 0x7006);
+ //printk("bt3c_cs: receiving %d bytes\n", avail);
+@@ -345,7 +353,11 @@
+ /* our irq handler is shared */
+ return IRQ_NONE;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ spin_lock(&(info->lock));
+
+@@ -473,7 +485,11 @@
+ unsigned int iobase, size, addr, fcs, tmp;
+ int i, err = 0;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ /* Reset */
+ bt3c_io_write(iobase, 0x8040, 0x0404);
+@@ -645,8 +661,27 @@
+ info->p_dev = link;
+ link->priv = info;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_VPP |
+ CONF_AUTO_SET_IO;
++#else
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
++ link->resource[0]->end = 8;
++#else
++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
++ link->io.NumPorts1= 8;
++#endif
++
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++
++ link->irq.Handler = bt3c_interrupt;
++#endif
++
++ link->conf.Attributes = CONF_ENABLE_IRQ;
++ link->conf.IntType = INT_MEMORY_AND_IO;
++#endif
+
+ return bt3c_config(link);
+ }
+@@ -657,6 +692,7 @@
+ bt3c_release(link);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ static int bt3c_check_config(struct pcmcia_device *p_dev, void *priv_data)
+ {
+ int *try = priv_data;
+@@ -695,6 +731,63 @@
+ }
+ return -ENODEV;
+ }
++#else
++static int bt3c_check_config(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cf,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++ unsigned long try = (unsigned long) priv_data;
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
++#endif
++
++ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
++ p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
++ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
++ (cf->io.win[0].base != 0)) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->resource[0]->start = cf->io.win[0].base;
++ if (!pcmcia_request_io(p_dev))
++#else
++ p_dev->io.BasePort1 = cf->io.win[0].base;
++ p_dev->io.IOAddrLines = (try == 0) ? 16 :
++ cf->io.flags & CISTPL_IO_LINES_MASK;
++ if (!pcmcia_request_io(p_dev, &p_dev->io))
++#endif
++ return 0;
++ }
++ return -ENODEV;
++}
++
++static int bt3c_check_config_notpicky(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cf,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++ static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
++ int j;
++
++ if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
++ for (j = 0; j < 5; j++) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->resource[0]->start = base[j];
++ p_dev->io_lines = base[j] ? 16 : 3;
++ if (!pcmcia_request_io(p_dev))
++#else
++ p_dev->io.BasePort1 = base[j];
++ p_dev->io.IOAddrLines = base[j] ? 16 : 3;
++ if (!pcmcia_request_io(p_dev, &p_dev->io))
++#endif
++ return 0;
++ }
++ }
++ return -ENODEV;
++}
++#endif
+
+ static int bt3c_config(struct pcmcia_device *link)
+ {
+@@ -718,9 +811,15 @@
+ goto failed;
+
+ found_port:
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ i = pcmcia_request_irq(link, &bt3c_interrupt);
+ if (i != 0)
+ goto failed;
++#else
++ i = pcmcia_request_irq(link, &link->irq);
++ if (i != 0)
++ link->irq.AssignedIRQ = 0;
++#endif
+
+ i = pcmcia_enable_device(link);
+ if (i != 0)
+@@ -755,7 +854,13 @@
+
+ static struct pcmcia_driver bt3c_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = "bt3c_cs",
++#else
++ .drv = {
++ .name = "bt3c_cs",
++ },
++#endif
+ .probe = bt3c_probe,
+ .remove = bt3c_detach,
+ .id_table = bt3c_ids,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_btuart_cs.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_btuart_cs.c
new file mode 100644
index 00000000..56b25bd7
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_btuart_cs.c
@@ -0,0 +1,204 @@
+--- a/drivers/bluetooth/btuart_cs.c
++++ b/drivers/bluetooth/btuart_cs.c
+@@ -140,7 +140,11 @@
+ }
+
+ do {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ register struct sk_buff *skb;
+ int len;
+
+@@ -181,7 +185,11 @@
+ return;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ do {
+ info->hdev->stat.byte_rx++;
+@@ -295,7 +303,11 @@
+ /* our irq handler is shared */
+ return IRQ_NONE;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ spin_lock(&(info->lock));
+
+@@ -352,7 +364,11 @@
+ return;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ spin_lock_irqsave(&(info->lock), flags);
+
+@@ -471,7 +487,11 @@
+ static int btuart_open(btuart_info_t *info)
+ {
+ unsigned long flags;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ struct hci_dev *hdev;
+
+ spin_lock_init(&(info->lock));
+@@ -538,7 +558,11 @@
+ static int btuart_close(btuart_info_t *info)
+ {
+ unsigned long flags;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ struct hci_dev *hdev = info->hdev;
+
+ if (!hdev)
+@@ -574,8 +598,27 @@
+ info->p_dev = link;
+ link->priv = info;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_VPP |
+ CONF_AUTO_SET_IO;
++#else
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
++ link->resource[0]->end = 8;
++#else
++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
++ link->io.NumPorts1= 8;
++#endif
++
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++
++ link->irq.Handler = btuart_interrupt;
++#endif
++
++ link->conf.Attributes = CONF_ENABLE_IRQ;
++ link->conf.IntType = INT_MEMORY_AND_IO;
++#endif
+
+ return btuart_config(link);
+ }
+@@ -586,6 +629,7 @@
+ btuart_release(link);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ static int btuart_check_config(struct pcmcia_device *p_dev, void *priv_data)
+ {
+ int *try = priv_data;
+@@ -624,6 +668,63 @@
+ }
+ return -ENODEV;
+ }
++#else
++static int btuart_check_config(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cf,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++ int *try = priv_data;
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
++#endif
++
++ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
++ p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
++ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
++ (cf->io.win[0].base != 0)) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->resource[0]->start = cf->io.win[0].base;
++ if (!pcmcia_request_io(p_dev))
++#else
++ p_dev->io.BasePort1 = cf->io.win[0].base;
++ p_dev->io.IOAddrLines = (*try == 0) ? 16 :
++ cf->io.flags & CISTPL_IO_LINES_MASK;
++ if (!pcmcia_request_io(p_dev, &p_dev->io))
++#endif
++ return 0;
++ }
++ return -ENODEV;
++}
++
++static int btuart_check_config_notpicky(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cf,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++ static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
++ int j;
++
++ if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) {
++ for (j = 0; j < 5; j++) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->resource[0]->start = base[j];
++ p_dev->io_lines = base[j] ? 16 : 3;
++ if (!pcmcia_request_io(p_dev))
++#else
++ p_dev->io.BasePort1 = base[j];
++ p_dev->io.IOAddrLines = base[j] ? 16 : 3;
++ if (!pcmcia_request_io(p_dev, &p_dev->io))
++#endif
++ return 0;
++ }
++ }
++ return -ENODEV;
++}
++#endif
+
+ static int btuart_config(struct pcmcia_device *link)
+ {
+@@ -647,9 +748,15 @@
+ goto failed;
+
+ found_port:
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ i = pcmcia_request_irq(link, btuart_interrupt);
+ if (i != 0)
+ goto failed;
++#else
++ i = pcmcia_request_irq(link, &link->irq);
++ if (i != 0)
++ link->irq.AssignedIRQ = 0;
++#endif
+
+ i = pcmcia_enable_device(link);
+ if (i != 0)
+@@ -683,7 +790,13 @@
+
+ static struct pcmcia_driver btuart_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = "btuart_cs",
++#else
++ .drv = {
++ .name = "btuart_cs",
++ },
++#endif
+ .probe = btuart_probe,
+ .remove = btuart_detach,
+ .id_table = btuart_ids,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_dtl1_cs.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_dtl1_cs.c
new file mode 100644
index 00000000..26e06b9b
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_bluetooth_dtl1_cs.c
@@ -0,0 +1,178 @@
+--- a/drivers/bluetooth/dtl1_cs.c
++++ b/drivers/bluetooth/dtl1_cs.c
+@@ -144,7 +144,11 @@
+ }
+
+ do {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ register struct sk_buff *skb;
+ int len;
+
+@@ -209,7 +213,11 @@
+ return;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ do {
+ info->hdev->stat.byte_rx++;
+@@ -296,7 +304,11 @@
+ /* our irq handler is shared */
+ return IRQ_NONE;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ iobase = info->p_dev->resource[0]->start;
++#else
++ iobase = info->p_dev->io.BasePort1;
++#endif
+
+ spin_lock(&(info->lock));
+
+@@ -451,7 +463,11 @@
+ static int dtl1_open(dtl1_info_t *info)
+ {
+ unsigned long flags;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ struct hci_dev *hdev;
+
+ spin_lock_init(&(info->lock));
+@@ -495,8 +511,13 @@
+ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */
+ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ info->ri_latch = inb(info->p_dev->resource[0]->start + UART_MSR)
+ & UART_MSR_RI;
++#else
++ info->ri_latch = inb(info->p_dev->io.BasePort1 + UART_MSR)
++ & UART_MSR_RI;
++#endif
+
+ /* Turn on interrupts */
+ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
+@@ -521,7 +542,11 @@
+ static int dtl1_close(dtl1_info_t *info)
+ {
+ unsigned long flags;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ unsigned int iobase = info->p_dev->resource[0]->start;
++#else
++ unsigned int iobase = info->p_dev->io.BasePort1;
++#endif
+ struct hci_dev *hdev = info->hdev;
+
+ if (!hdev)
+@@ -557,7 +582,24 @@
+ info->p_dev = link;
+ link->priv = info;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
++#else
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
++ link->resource[0]->end = 8;
++#else
++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
++ link->io.NumPorts1= 8;
++#endif
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++ link->irq.Handler = dtl1_interrupt;
++#endif
++
++ link->conf.Attributes = CONF_ENABLE_IRQ;
++ link->conf.IntType = INT_MEMORY_AND_IO;
++#endif
+
+ return dtl1_config(link);
+ }
+@@ -571,6 +613,7 @@
+ pcmcia_disable_device(link);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ static int dtl1_confcheck(struct pcmcia_device *p_dev, void *priv_data)
+ {
+ if ((p_dev->resource[1]->end) || (p_dev->resource[1]->end < 8))
+@@ -581,6 +624,29 @@
+
+ return pcmcia_request_io(p_dev);
+ }
++#else
++static int dtl1_confcheck(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cf,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++ if ((cf->io.nwin != 1) || (cf->io.win[0].len <= 8))
++ return -ENODEV;
++
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->resource[0]->start = cf->io.win[0].base;
++ p_dev->resource[0]->end = cf->io.win[0].len; /*yo */
++ p_dev->io_lines = cf->io.flags & CISTPL_IO_LINES_MASK;
++ return pcmcia_request_io(p_dev);
++#else
++ p_dev->io.BasePort1 = cf->io.win[0].base;
++ p_dev->io.NumPorts1 = cf->io.win[0].len; /*yo */
++ p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
++ return pcmcia_request_io(p_dev, &p_dev->io);
++#endif
++}
++#endif
+
+ static int dtl1_config(struct pcmcia_device *link)
+ {
+@@ -588,14 +654,24 @@
+ int ret;
+
+ /* Look for a generic full-sized window */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ link->resource[0]->end = 8;
++#else
++ link->io.NumPorts1 = 8;
++#endif
+ ret = pcmcia_loop_config(link, dtl1_confcheck, NULL);
+ if (ret)
+ goto failed;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ret = pcmcia_request_irq(link, dtl1_interrupt);
+ if (ret)
+ goto failed;
++#else
++ ret = pcmcia_request_irq(link, &link->irq);
++ if (ret != 0)
++ link->irq.AssignedIRQ = 0;
++#endif
+
+ ret = pcmcia_enable_device(link);
+ if (ret)
+@@ -623,7 +699,13 @@
+
+ static struct pcmcia_driver dtl1_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = "dtl1_cs",
++#else
++ .drv = {
++ .name = "dtl1_cs",
++ },
++#endif
+ .probe = dtl1_probe,
+ .remove = dtl1_detach,
+ .id_table = dtl1_ids,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_b43_pcmcia.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_b43_pcmcia.c
new file mode 100644
index 00000000..dc1b3c66
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_b43_pcmcia.c
@@ -0,0 +1,82 @@
+--- a/drivers/net/wireless/b43/pcmcia.c
++++ b/drivers/net/wireless/b43/pcmcia.c
+@@ -63,6 +63,9 @@
+ static int b43_pcmcia_probe(struct pcmcia_device *dev)
+ {
+ struct ssb_bus *ssb;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
++ win_req_t win;
++#endif
+ int err = -ENOMEM;
+ int res = 0;
+
+@@ -72,6 +75,7 @@
+
+ err = -ENODEV;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ dev->config_flags |= CONF_ENABLE_IRQ;
+
+ dev->resource[2]->flags |= WIN_ENABLE | WIN_DATA_WIDTH_16 |
+@@ -79,21 +83,46 @@
+ dev->resource[2]->start = 0;
+ dev->resource[2]->end = SSB_CORE_SIZE;
+ res = pcmcia_request_window(dev, dev->resource[2], 250);
++#else
++ dev->conf.Attributes = CONF_ENABLE_IRQ;
++ dev->conf.IntType = INT_MEMORY_AND_IO;
++
++ win.Attributes = WIN_ENABLE | WIN_DATA_WIDTH_16 |
++ WIN_USE_WAIT;
++ win.Base = 0;
++ win.Size = SSB_CORE_SIZE;
++ win.AccessSpeed = 250;
++ res = pcmcia_request_window(dev, &win, &dev->win);
++#endif
+ if (res != 0)
+ goto err_kfree_ssb;
+-
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ res = pcmcia_map_mem_page(dev, dev->resource[2], 0);
++#else
++ res = pcmcia_map_mem_page(dev, dev->win, 0);
++#endif
+ if (res != 0)
+ goto err_disable;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ if (!dev->irq)
++#else
++ dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++ dev->irq.Handler = NULL; /* The handler is registered later. */
++ res = pcmcia_request_irq(dev, &dev->irq);
++ if (res != 0)
++#endif
+ goto err_disable;
+
+ res = pcmcia_enable_device(dev);
+ if (res != 0)
+ goto err_disable;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ err = ssb_bus_pcmciabus_register(ssb, dev, dev->resource[2]->start);
++#else
++ err = ssb_bus_pcmciabus_register(ssb, dev, win.Base);
++#endif
+ if (err)
+ goto err_disable;
+ dev->priv = ssb;
+@@ -122,7 +151,13 @@
+
+ static struct pcmcia_driver b43_pcmcia_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = "b43-pcmcia",
++#else
++ .drv = {
++ .name = "b43-pcmcia",
++ },
++#endif
+ .id_table = b43_pcmcia_tbl,
+ .probe = b43_pcmcia_probe,
+ .remove = b43_pcmcia_remove,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_libertas_if_cs.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_libertas_if_cs.c
new file mode 100644
index 00000000..2568ba6e
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_libertas_if_cs.c
@@ -0,0 +1,163 @@
+--- a/drivers/net/wireless/libertas/if_cs.c
++++ b/drivers/net/wireless/libertas/if_cs.c
+@@ -757,7 +757,11 @@
+ goto out;
+
+ /* Now actually get the IRQ */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ret = request_irq(card->p_dev->irq, if_cs_interrupt,
++#else
++ ret = request_irq(card->p_dev->irq.AssignedIRQ, if_cs_interrupt,
++#endif
+ IRQF_SHARED, DRV_NAME, card);
+ if (ret) {
+ pr_err("error in request_irq\n");
+@@ -775,7 +779,11 @@
+ priv->fw_ready = 1;
+ if (lbs_start_card(priv) != 0) {
+ pr_err("could not activate card\n");
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ free_irq(card->p_dev->irq, card);
++#else
++ free_irq(card->p_dev->irq.AssignedIRQ, card);
++#endif
+ }
+
+ out:
+@@ -824,7 +832,11 @@
+
+ lbs_deb_enter(LBS_DEB_CS);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ free_irq(p_dev->irq, card);
++#else
++ free_irq(p_dev->irq.AssignedIRQ, card);
++#endif
+ pcmcia_disable_device(p_dev);
+ if (card->iobase)
+ ioport_unmap(card->iobase);
+@@ -832,7 +844,7 @@
+ lbs_deb_leave(LBS_DEB_CS);
+ }
+
+-
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ static int if_cs_ioprobe(struct pcmcia_device *p_dev, void *priv_data)
+ {
+ p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
+@@ -842,9 +854,39 @@
+ pr_err("wrong CIS (check number of IO windows)\n");
+ return -ENODEV;
+ }
++#else
++static int if_cs_ioprobe(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cfg,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
++ p_dev->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO;
++ p_dev->resource[0]->start = cfg->io.win[0].base;
++ p_dev->resource[0]->end = cfg->io.win[0].len;
++#else
++ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
++ p_dev->io.BasePort1 = cfg->io.win[0].base;
++ p_dev->io.NumPorts1 = cfg->io.win[0].len;
++#endif
++
++ /* Do we need to allocate an interrupt? */
++ p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
++
++ /* IO window settings */
++ if (cfg->io.nwin != 1) {
++ pr_err("wrong CIS (check number of IO windows)\n");
++ return -ENODEV;
++ }
++#endif
+
+ /* This reserves IO space but doesn't actually enable it */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ return pcmcia_request_io(p_dev);
++#else
++ return pcmcia_request_io(p_dev, &p_dev->io);
++#endif
+ }
+
+ static int if_cs_probe(struct pcmcia_device *p_dev)
+@@ -863,7 +905,16 @@
+ card->p_dev = p_dev;
+ p_dev->priv = card;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ p_dev->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
++#else
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++ p_dev->irq.Handler = NULL;
++#endif
++ p_dev->conf.Attributes = 0;
++ p_dev->conf.IntType = INT_MEMORY_AND_IO;
++#endif
+
+ if (pcmcia_loop_config(p_dev, if_cs_ioprobe, NULL)) {
+ pr_err("error in pcmcia_loop_config\n");
+@@ -875,12 +926,26 @@
+ * a handler to the interrupt, unless the 'Handler' member of
+ * the irq structure is initialized.
+ */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ if (!p_dev->irq)
+ goto out1;
++#else
++ if (p_dev->conf.Attributes & CONF_ENABLE_IRQ) {
++ ret = pcmcia_request_irq(p_dev, &p_dev->irq);
++ if (ret) {
++ pr_err("error in pcmcia_request_irq\n");
++ goto out1;
++ }
++ }
++#endif
+
+ /* Initialize io access */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ card->iobase = ioport_map(p_dev->resource[0]->start,
+ resource_size(p_dev->resource[0]));
++#else
++ card->iobase = ioport_map(p_dev->io.BasePort1, p_dev->io.NumPorts1);
++#endif
+ if (!card->iobase) {
+ pr_err("error in ioport_map\n");
+ ret = -EIO;
+@@ -894,7 +959,17 @@
+ }
+
+ /* Finally, report what we've done */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ lbs_deb_cs("irq %d, io %pR", p_dev->irq, p_dev->resource[0]);
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
++ lbs_deb_cs("irq %d, io 0x%04x-0x%04x\n",
++ p_dev->irq, p_dev->io.BasePort1,
++ p_dev->io.BasePort1 + p_dev->io.NumPorts1 - 1);
++#else
++ lbs_deb_cs("irq %d, io 0x%04x-0x%04x\n",
++ p_dev->irq.AssignedIRQ, p_dev->io.BasePort1,
++ p_dev->io.BasePort1 + p_dev->io.NumPorts1 - 1);
++#endif
+
+ /*
+ * Most of the libertas cards can do unaligned register access, but some
+@@ -1001,7 +1076,13 @@
+
+ static struct pcmcia_driver lbs_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = DRV_NAME,
++#else
++ .drv = {
++ .name = DRV_NAME,
++ },
++#endif
+ .probe = if_cs_probe,
+ .remove = if_cs_detach,
+ .id_table = if_cs_ids,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_orinoco_cs.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_orinoco_cs.c
new file mode 100644
index 00000000..ef86ab3e
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_orinoco_cs.c
@@ -0,0 +1,207 @@
+--- a/drivers/net/wireless/orinoco/orinoco_cs.c
++++ b/drivers/net/wireless/orinoco/orinoco_cs.c
+@@ -78,7 +78,11 @@
+ /* We need atomic ops here, because we're not holding the lock */
+ set_bit(0, &card->hard_reset_in_progress);
+
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)
++ err = pcmcia_reset_card(link, NULL);
++#else
+ err = pcmcia_reset_card(link->socket);
++#endif
+ if (err)
+ return err;
+
+@@ -108,6 +112,16 @@
+ card->p_dev = link;
+ link->priv = priv;
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ /* Interrupt setup */
++ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++ link->irq.Handler = orinoco_interrupt;
++#endif
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
++ link->conf.Attributes = 0;
++ link->conf.IntType = INT_MEMORY_AND_IO;
++#endif
++
+ return orinoco_cs_config(link);
+ } /* orinoco_cs_attach */
+
+@@ -122,6 +136,7 @@
+ free_orinocodev(priv);
+ } /* orinoco_cs_detach */
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ static int orinoco_cs_config_check(struct pcmcia_device *p_dev, void *priv_data)
+ {
+ if (p_dev->config_index == 0)
+@@ -129,6 +144,98 @@
+
+ return pcmcia_request_io(p_dev);
+ };
++#else
++static int orinoco_cs_config_check(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cfg,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++ if (cfg->index == 0)
++ goto next_entry;
++
++ /* Use power settings for Vcc and Vpp if present */
++ /* Note that the CIS values need to be rescaled */
++ if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) {
++ if (vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000) {
++ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
++ __func__, vcc,
++ cfg->vcc.param[CISTPL_POWER_VNOM] / 10000);
++ if (!ignore_cis_vcc)
++ goto next_entry;
++ }
++ } else if (dflt->vcc.present & (1 << CISTPL_POWER_VNOM)) {
++ if (vcc != dflt->vcc.param[CISTPL_POWER_VNOM] / 10000) {
++ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
++ __func__, vcc,
++ dflt->vcc.param[CISTPL_POWER_VNOM] / 10000);
++ if (!ignore_cis_vcc)
++ goto next_entry;
++ }
++ }
++
++ if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
++ p_dev->conf.Vpp =
++ cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
++ else if (dflt->vpp1.present & (1 << CISTPL_POWER_VNOM))
++ p_dev->conf.Vpp =
++ dflt->vpp1.param[CISTPL_POWER_VNOM] / 10000;
++
++ /* Do we need to allocate an interrupt? */
++ p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
++
++ /* IO window settings */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ p_dev->resource[0]->end = p_dev->resource[1]->end = 0;
++#else
++ p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0;
++#endif
++ if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) {
++ cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ p_dev->io_lines = io->flags & CISTPL_IO_LINES_MASK;
++ p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
++ p_dev->resource[0]->flags |=
++ pcmcia_io_cfg_data_width(io->flags);
++ p_dev->resource[0]->start = io->win[0].base;
++ p_dev->resource[0]->end = io->win[0].len;
++#else
++ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
++ if (!(io->flags & CISTPL_IO_8BIT))
++ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
++ if (!(io->flags & CISTPL_IO_16BIT))
++ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
++ p_dev->io.IOAddrLines = io->flags & CISTPL_IO_LINES_MASK;
++ p_dev->io.BasePort1 = io->win[0].base;
++ p_dev->io.NumPorts1 = io->win[0].len;
++#endif
++ if (io->nwin > 1) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ p_dev->resource[1]->flags = p_dev->resource[0]->flags;
++ p_dev->resource[1]->start = io->win[1].base;
++ p_dev->resource[1]->end = io->win[1].len;
++#else
++ p_dev->io.Attributes2 = p_dev->io.Attributes1;
++ p_dev->io.BasePort2 = io->win[1].base;
++ p_dev->io.NumPorts2 = io->win[1].len;
++#endif
++ }
++
++ /* This reserves IO space but doesn't actually enable it */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ if (pcmcia_request_io(p_dev) != 0)
++#else
++ if (pcmcia_request_io(p_dev, &p_dev->io) != 0)
++#endif
++ goto next_entry;
++ }
++ return 0;
++
++next_entry:
++ pcmcia_disable_device(p_dev);
++ return -ENODEV;
++};
++#endif
+
+ static int
+ orinoco_cs_config(struct pcmcia_device *link)
+@@ -138,10 +245,12 @@
+ int ret;
+ void __iomem *mem;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ link->config_flags |= CONF_AUTO_SET_VPP | CONF_AUTO_CHECK_VCC |
+ CONF_AUTO_SET_IO | CONF_ENABLE_IRQ;
+ if (ignore_cis_vcc)
+ link->config_flags &= ~CONF_AUTO_CHECK_VCC;
++#endif
+ ret = pcmcia_loop_config(link, orinoco_cs_config_check, NULL);
+ if (ret) {
+ if (!ignore_cis_vcc)
+@@ -151,8 +260,12 @@
+ goto failed;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
+ mem = ioport_map(link->resource[0]->start,
+ resource_size(link->resource[0]));
++#else
++ mem = ioport_map(link->io.BasePort1, link->io.NumPorts1);
++#endif
+ if (!mem)
+ goto failed;
+
+@@ -161,7 +274,11 @@
+ * called. */
+ hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ret = pcmcia_request_irq(link, orinoco_interrupt);
++#else
++ ret = pcmcia_request_irq(link, &link->irq);
++#endif
+ if (ret)
+ goto failed;
+
+@@ -176,8 +293,16 @@
+ }
+
+ /* Register an interface with the stack */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ if (orinoco_if_add(priv, link->resource[0]->start,
+ link->irq, NULL) != 0) {
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
++ if (orinoco_if_add(priv, link->io.BasePort1,
++ link->irq, NULL) != 0) {
++#else
++ if (orinoco_if_add(priv, link->io.BasePort1,
++ link->irq.AssignedIRQ, NULL) != 0) {
++#endif
+ printk(KERN_ERR PFX "orinoco_if_add() failed\n");
+ goto failed;
+ }
+@@ -331,7 +456,13 @@
+
+ static struct pcmcia_driver orinoco_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = DRIVER_NAME,
++#else
++ .drv = {
++ .name = DRIVER_NAME,
++ },
++#endif
+ .probe = orinoco_cs_probe,
+ .remove = orinoco_cs_detach,
+ .id_table = orinoco_cs_ids,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_spectrum_cs.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_spectrum_cs.c
new file mode 100644
index 00000000..d92d0cfa
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_net_wireless_orinoco_spectrum_cs.c
@@ -0,0 +1,195 @@
+--- a/drivers/net/wireless/orinoco/spectrum_cs.c
++++ b/drivers/net/wireless/orinoco/spectrum_cs.c
+@@ -170,6 +170,16 @@
+ card->p_dev = link;
+ link->priv = priv;
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ /* Interrupt setup */
++ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
++ link->irq.Handler = orinoco_interrupt;
++#endif
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37))
++ link->conf.Attributes = 0;
++ link->conf.IntType = INT_MEMORY_AND_IO;
++#endif
++
+ return spectrum_cs_config(link);
+ } /* spectrum_cs_attach */
+
+@@ -184,6 +194,7 @@
+ free_orinocodev(priv);
+ } /* spectrum_cs_detach */
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ static int spectrum_cs_config_check(struct pcmcia_device *p_dev,
+ void *priv_data)
+ {
+@@ -192,6 +203,98 @@
+
+ return pcmcia_request_io(p_dev);
+ };
++#else
++static int spectrum_cs_config_check(struct pcmcia_device *p_dev,
++ cistpl_cftable_entry_t *cfg,
++ cistpl_cftable_entry_t *dflt,
++ unsigned int vcc,
++ void *priv_data)
++{
++ if (cfg->index == 0)
++ goto next_entry;
++
++ /* Use power settings for Vcc and Vpp if present */
++ /* Note that the CIS values need to be rescaled */
++ if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) {
++ if (vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / 10000) {
++ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
++ __func__, vcc,
++ cfg->vcc.param[CISTPL_POWER_VNOM] / 10000);
++ if (!ignore_cis_vcc)
++ goto next_entry;
++ }
++ } else if (dflt->vcc.present & (1 << CISTPL_POWER_VNOM)) {
++ if (vcc != dflt->vcc.param[CISTPL_POWER_VNOM] / 10000) {
++ DEBUG(2, "%s: Vcc mismatch (vcc = %d, CIS = %d)\n",
++ __func__, vcc,
++ dflt->vcc.param[CISTPL_POWER_VNOM] / 10000);
++ if (!ignore_cis_vcc)
++ goto next_entry;
++ }
++ }
++
++ if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM))
++ p_dev->conf.Vpp =
++ cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
++ else if (dflt->vpp1.present & (1 << CISTPL_POWER_VNOM))
++ p_dev->conf.Vpp =
++ dflt->vpp1.param[CISTPL_POWER_VNOM] / 10000;
++
++ /* Do we need to allocate an interrupt? */
++ p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
++
++ /* IO window settings */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ p_dev->resource[0]->end = p_dev->resource[1]->end = 0;
++#else
++ p_dev->io.NumPorts1 = p_dev->io.NumPorts2 = 0;
++#endif
++ if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) {
++ cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ p_dev->io_lines = io->flags & CISTPL_IO_LINES_MASK;
++ p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH;
++ p_dev->resource[0]->flags |=
++ pcmcia_io_cfg_data_width(io->flags);
++ p_dev->resource[0]->start = io->win[0].base;
++ p_dev->resource[0]->end = io->win[0].len;
++#else
++ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
++ if (!(io->flags & CISTPL_IO_8BIT))
++ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
++ if (!(io->flags & CISTPL_IO_16BIT))
++ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
++ p_dev->io.IOAddrLines = io->flags & CISTPL_IO_LINES_MASK;
++ p_dev->io.BasePort1 = io->win[0].base;
++ p_dev->io.NumPorts1 = io->win[0].len;
++#endif
++ if (io->nwin > 1) {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ p_dev->resource[1]->flags = p_dev->resource[0]->flags;
++ p_dev->resource[1]->start = io->win[1].base;
++ p_dev->resource[1]->end = io->win[1].len;
++#else
++ p_dev->io.Attributes2 = p_dev->io.Attributes1;
++ p_dev->io.BasePort2 = io->win[1].base;
++ p_dev->io.NumPorts2 = io->win[1].len;
++#endif
++ }
++
++ /* This reserves IO space but doesn't actually enable it */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++ if (pcmcia_request_io(p_dev) != 0)
++#else
++ if (pcmcia_request_io(p_dev, &p_dev->io) != 0)
++#endif
++ goto next_entry;
++ }
++ return 0;
++
++next_entry:
++ pcmcia_disable_device(p_dev);
++ return -ENODEV;
++};
++#endif
+
+ static int
+ spectrum_cs_config(struct pcmcia_device *link)
+@@ -201,10 +304,12 @@
+ int ret;
+ void __iomem *mem;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ link->config_flags |= CONF_AUTO_SET_VPP | CONF_AUTO_CHECK_VCC |
+ CONF_AUTO_SET_IO | CONF_ENABLE_IRQ;
+ if (ignore_cis_vcc)
+ link->config_flags &= ~CONF_AUTO_CHECK_VCC;
++#endif
+ ret = pcmcia_loop_config(link, spectrum_cs_config_check, NULL);
+ if (ret) {
+ if (!ignore_cis_vcc)
+@@ -214,8 +319,12 @@
+ goto failed;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
+ mem = ioport_map(link->resource[0]->start,
+ resource_size(link->resource[0]));
++#else
++ mem = ioport_map(link->io.BasePort1, link->io.NumPorts1);
++#endif
+ if (!mem)
+ goto failed;
+
+@@ -225,7 +334,11 @@
+ hermes_struct_init(hw, mem, HERMES_16BIT_REGSPACING);
+ hw->eeprom_pda = true;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ret = pcmcia_request_irq(link, orinoco_interrupt);
++#else
++ ret = pcmcia_request_irq(link, &link->irq);
++#endif
+ if (ret)
+ goto failed;
+
+@@ -244,8 +357,16 @@
+ }
+
+ /* Register an interface with the stack */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ if (orinoco_if_add(priv, link->resource[0]->start,
+ link->irq, NULL) != 0) {
++#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
++ if (orinoco_if_add(priv, link->io.BasePort1,
++ link->irq, NULL) != 0) {
++#else
++ if (orinoco_if_add(priv, link->io.BasePort1,
++ link->irq.AssignedIRQ, NULL) != 0) {
++#endif
+ printk(KERN_ERR PFX "orinoco_if_add() failed\n");
+ goto failed;
+ }
+@@ -311,7 +432,13 @@
+
+ static struct pcmcia_driver orinoco_driver = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+ .name = DRIVER_NAME,
++#else
++ .drv = {
++ .name = DRIVER_NAME,
++ },
++#endif
+ .probe = spectrum_cs_probe,
+ .remove = spectrum_cs_detach,
+ .suspend = spectrum_cs_suspend,
diff --git a/patches/collateral-evolutions/network/24-pcmcia/drivers_ssb_main.c b/patches/collateral-evolutions/network/24-pcmcia/drivers_ssb_main.c
new file mode 100644
index 00000000..7223ace2
--- /dev/null
+++ b/patches/collateral-evolutions/network/24-pcmcia/drivers_ssb_main.c
@@ -0,0 +1,14 @@
+--- a/drivers/ssb/main.c
++++ b/drivers/ssb/main.c
+@@ -517,7 +517,11 @@
+ break;
+ case SSB_BUSTYPE_PCMCIA:
+ #ifdef CONFIG_SSB_PCMCIAHOST
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ sdev->irq = bus->host_pcmcia->irq;
++#else
++ sdev->irq = bus->host_pcmcia->irq.AssignedIRQ;
++#endif
+ dev->parent = &bus->host_pcmcia->dev;
+ #endif
+ break;
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head.patch b/patches/collateral-evolutions/network/25-multicast-list_head.patch
deleted file mode 100644
index a20aa547..00000000
--- a/patches/collateral-evolutions/network/25-multicast-list_head.patch
+++ /dev/null
@@ -1,872 +0,0 @@
-Backport commit 22bedad3ce112d5ca1eaf043d4990fa2ed698c87:
- net: convert multicast list to list_head
-
- Converts the list and the core manipulating with it to be the same as uc_list.
-
- +uses two functions for adding/removing mc address (normal and "global"
- variant) instead of a function parameter.
- +removes dev_mcast.c completely.
- +exposes netdev_hw_addr_list_* macros along with __hw_addr_* functions for
- manipulation with lists on a sandbox (used in bonding and 80211 drivers)
-
-This also backport commit 2f787b0b76bf5de2eaa3ca3a29d89123ae03c856
-
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -410,7 +410,11 @@ static void atl1c_set_multi(struct net_d
-
- /* comoute mc addresses' hash value ,and put it into hash table */
- netdev_for_each_mc_addr(ha, netdev) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- hash_value = atl1c_hash_mc_addr(hw, ha->addr);
-+#else
-+ hash_value = atl1c_hash_mc_addr(hw, ha->dmi_addr);
-+#endif
- atl1c_hash_set(hw, hash_value);
- }
- }
---- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-@@ -308,7 +308,11 @@ static void atl1e_set_multi(struct net_d
-
- /* comoute mc addresses' hash value ,and put it into hash table */
- netdev_for_each_mc_addr(ha, netdev) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- hash_value = atl1e_hash_mc_addr(hw, ha->addr);
-+#else
-+ hash_value = atl1e_hash_mc_addr(hw, ha->dmi_addr);
-+#endif
- atl1e_hash_set(hw, hash_value);
- }
- }
---- a/drivers/net/ethernet/atheros/atlx/atl2.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
-@@ -159,7 +159,11 @@ static void atl2_set_multi(struct net_de
-
- /* comoute mc addresses' hash value ,and put it into hash table */
- netdev_for_each_mc_addr(ha, netdev) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- hash_value = atl2_hash_mc_addr(hw, ha->addr);
-+#else
-+ hash_value = atl2_hash_mc_addr(hw, ha->dmi_addr);
-+#endif
- atl2_hash_set(hw, hash_value);
- }
- }
---- a/drivers/net/ethernet/atheros/atlx/atlx.c
-+++ b/drivers/net/ethernet/atheros/atlx/atlx.c
-@@ -149,7 +149,11 @@ static void atlx_set_multi(struct net_de
-
- /* compute mc addresses' hash value ,and put it into hash table */
- netdev_for_each_mc_addr(ha, netdev) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- hash_value = atlx_hash_mc_addr(hw, ha->addr);
-+#else
-+ hash_value = atlx_hash_mc_addr(hw, ha->dmi_addr);
-+#endif
- atlx_hash_set(hw, hash_value);
- }
- }
---- a/drivers/net/ethernet/broadcom/b44.c
-+++ b/drivers/net/ethernet/broadcom/b44.c
-@@ -1693,7 +1693,11 @@ static int __b44_load_mcast(struct b44 *
- netdev_for_each_mc_addr(ha, dev) {
- if (i == num_ents)
- break;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- __b44_cam_write(bp, ha->addr, i++ + 1);
-+#else
-+ __b44_cam_write(bp, ha->dmi_addr, i++ + 1);
-+#endif
- }
- return i+1;
- }
---- a/drivers/net/wireless/adm8211.c
-+++ b/drivers/net/wireless/adm8211.c
-@@ -1320,19 +1320,37 @@ static void adm8211_bss_info_changed(str
- }
-
- static u64 adm8211_prepare_multicast(struct ieee80211_hw *hw,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count, struct dev_addr_list *ha)
-+#endif
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- unsigned int bit_nr;
-- u32 mc_filter[2];
- struct netdev_hw_addr *ha;
-+#else
-+ unsigned int bit_nr, i;
-+#endif
-+ u32 mc_filter[2];
-
- mc_filter[1] = mc_filter[0] = 0;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- netdev_hw_addr_list_for_each(ha, mc_list) {
- bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
-+#else
-+ for (i = 0; i < mc_count; i++) {
-+ if (!ha)
-+ break;
-+ bit_nr = ether_crc(ETH_ALEN, ha->dmi_addr) >> 26;
-+#endif
-
- bit_nr &= 0x3F;
- mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ ha = ha->next;
-+#endif
- }
-
- return mc_filter[0] | ((u64)(mc_filter[1]) << 32);
---- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
-+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
-@@ -318,20 +318,42 @@ ath5k_bss_info_changed(struct ieee80211_
-
- static u64
- ath5k_prepare_multicast(struct ieee80211_hw *hw,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count, struct dev_addr_list *ha)
-+#endif
- {
- u32 mfilt[2], val;
- u8 pos;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr *ha;
-+#else
-+ int i;
-+#endif
-
- mfilt[0] = 0;
- mfilt[1] = 1;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- netdev_hw_addr_list_for_each(ha, mc_list) {
-+#else
-+ for (i = 0; i < mc_count; i++) {
-+ if (!ha)
-+ break;
-+#endif
- /* calculate XOR of eight 6-bit values */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- val = get_unaligned_le32(ha->addr + 0);
-+#else
-+ val = get_unaligned_le32(ha->dmi_addr + 0);
-+#endif
- pos = (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- val = get_unaligned_le32(ha->addr + 3);
-+#else
-+ val = get_unaligned_le32(ha->dmi_addr + 3);
-+#endif
- pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
- pos &= 0x3f;
- mfilt[pos / 32] |= (1 << (pos % 32));
-@@ -340,6 +362,9 @@ ath5k_prepare_multicast(struct ieee80211
- * need to inform below not to reset the mcast */
- /* ath5k_hw_set_mcast_filterindex(ah,
- * ha->addr[5]); */
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ ha = ha->next;
-+#endif
- }
-
- return ((u64)(mfilt[1]) << 32) | mfilt[0];
---- a/drivers/net/wireless/ath/carl9170/main.c
-+++ b/drivers/net/wireless/ath/carl9170/main.c
-@@ -967,17 +967,35 @@ out:
- return err;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- static u64 carl9170_op_prepare_multicast(struct ieee80211_hw *hw,
- struct netdev_hw_addr_list *mc_list)
-+#else
-+static u64 carl9170_op_prepare_multicast(struct ieee80211_hw *hw, int mc_count,
-+ struct dev_addr_list *ha)
-+#endif
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr *ha;
-+#else
-+ int i;
-+#endif
- u64 mchash;
-
- /* always get broadcast frames */
- mchash = 1ULL << (0xff >> 2);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- netdev_hw_addr_list_for_each(ha, mc_list)
- mchash |= 1ULL << (ha->addr[5] >> 2);
-+#else
-+ for (i = 0; i < mc_count; i++) {
-+ if (WARN_ON(!ha))
-+ break;
-+ mchash |= 1ULL << (ha->dmi_addr[5] >> 2);
-+ ha = ha->next;
-+ }
-+#endif
-
- return mchash;
- }
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -349,18 +349,34 @@ static int lbs_add_mcast_addrs(struct cm
- netif_addr_lock_bh(dev);
- cnt = netdev_mc_count(dev);
- netdev_for_each_mc_addr(ha, dev) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- if (mac_in_list(cmd->maclist, nr_addrs, ha->addr)) {
-+#else
-+ if (mac_in_list(cmd->maclist, nr_addrs, ha->dmi_addr)) {
-+#endif
- lbs_deb_net("mcast address %s:%pM skipped\n", dev->name,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ha->addr);
-+#else
-+ ha->dmi_addr);
-+#endif
- cnt--;
- continue;
- }
-
- if (i == MRVDRV_MAX_MULTICAST_LIST_SIZE)
- break;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- memcpy(&cmd->maclist[6*i], ha->addr, ETH_ALEN);
-+#else
-+ memcpy(&cmd->maclist[6*i], ha->dmi_addr, ETH_ALEN);
-+#endif
- lbs_deb_net("mcast address %s:%pM added to filter\n", dev->name,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ha->addr);
-+#else
-+ ha->dmi_addr);
-+#endif
- i++;
- cnt--;
- }
---- a/drivers/net/wireless/libertas_tf/main.c
-+++ b/drivers/net/wireless/libertas_tf/main.c
-@@ -421,20 +421,36 @@ static int lbtf_op_config(struct ieee802
- }
-
- static u64 lbtf_op_prepare_multicast(struct ieee80211_hw *hw,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count, struct dev_addr_list *ha)
-+#endif
- {
- struct lbtf_private *priv = hw->priv;
- int i;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr *ha;
- int mc_count = netdev_hw_addr_list_count(mc_list);
-+#endif
-
- if (!mc_count || mc_count > MRVDRV_MAX_MULTICAST_LIST_SIZE)
- return mc_count;
-
- priv->nr_of_multicastmacaddr = mc_count;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- i = 0;
- netdev_hw_addr_list_for_each(ha, mc_list)
- memcpy(&priv->multicastlist[i++], ha->addr, ETH_ALEN);
-+#else
-+ for (i = 0; i < mc_count; i++) {
-+ if (!ha)
-+ break;
-+ memcpy(&priv->multicastlist[i], ha->da_addr,
-+ ETH_ALEN);
-+ ha = ha->next;
-+ }
-+#endif
-
- return mc_count;
- }
---- a/drivers/net/wireless/mwifiex/sta_ioctl.c
-+++ b/drivers/net/wireless/mwifiex/sta_ioctl.c
-@@ -43,7 +43,11 @@ int mwifiex_copy_mcast_addr(struct mwifi
- struct netdev_hw_addr *ha;
-
- netdev_for_each_mc_addr(ha, dev)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- memcpy(&mlist->mac_list[i++], ha->addr, ETH_ALEN);
-+#else
-+ memcpy(&mlist->mac_list[i++], ha->dmi_addr, ETH_ALEN);
-+#endif
-
- return i;
- }
---- a/drivers/net/wireless/mwifiex/debugfs.c
-+++ b/drivers/net/wireless/mwifiex/debugfs.c
-@@ -215,7 +215,11 @@ mwifiex_info_read(struct file *file, cha
-
- netdev_for_each_mc_addr(ha, netdev)
- p += sprintf(p, "multicast_address[%d]=\"%pM\"\n",
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- i++, ha->addr);
-+#else
-+ i++, ha->dmi_addr);
-+#endif
- }
-
- p += sprintf(p, "num_tx_bytes = %lu\n", priv->stats.tx_bytes);
---- a/drivers/net/wireless/mwl8k.c
-+++ b/drivers/net/wireless/mwl8k.c
-@@ -2656,15 +2656,21 @@ struct mwl8k_cmd_mac_multicast_adr {
-
- static struct mwl8k_cmd_pkt *
- __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count, struct dev_addr_list *ha)
-+#endif
- {
- struct mwl8k_priv *priv = hw->priv;
- struct mwl8k_cmd_mac_multicast_adr *cmd;
- int size;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- int mc_count = 0;
-
- if (mc_list)
- mc_count = netdev_hw_addr_list_count(mc_list);
-+#endif
-
- if (allmulti || mc_count > priv->num_mcaddrs) {
- allmulti = 1;
-@@ -2685,13 +2691,27 @@ __mwl8k_cmd_mac_multicast_adr(struct iee
- if (allmulti) {
- cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST);
- } else if (mc_count) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr *ha;
- int i = 0;
-+#else
-+ int i;
-+#endif
-
- cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_MULTICAST);
- cmd->numaddr = cpu_to_le16(mc_count);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- netdev_hw_addr_list_for_each(ha, mc_list) {
- memcpy(cmd->addr[i], ha->addr, ETH_ALEN);
-+#else
-+ for (i = 0; i < mc_count && ha; i++) {
-+ if (ha->da_addrlen != ETH_ALEN) {
-+ kfree(cmd);
-+ return NULL;
-+ }
-+ memcpy(cmd->addr[i], ha->da_addr, ETH_ALEN);
-+ ha = ha->next;
-+#endif
- }
- }
-
-@@ -5022,7 +5042,11 @@ mwl8k_bss_info_changed(struct ieee80211_
- }
-
- static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count, struct dev_addr_list *ha)
-+#endif
- {
- struct mwl8k_cmd_pkt *cmd;
-
-@@ -5033,7 +5057,11 @@ static u64 mwl8k_prepare_multicast(struc
- * we'll end up throwing this packet away and creating a new
- * one in mwl8k_configure_filter().
- */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_list);
-+#else
-+ cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_count, ha);
-+#endif
-
- return (unsigned long)cmd;
- }
-@@ -5155,7 +5183,11 @@ static void mwl8k_configure_filter(struc
- */
- if (*total_flags & FIF_ALLMULTI) {
- kfree(cmd);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, NULL);
-+#else
-+ cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, 0, NULL);
-+#endif
- }
-
- if (cmd != NULL) {
---- a/drivers/net/wireless/orinoco/hw.c
-+++ b/drivers/net/wireless/orinoco/hw.c
-@@ -1093,7 +1093,11 @@ int __orinoco_hw_set_multicast_list(stru
- netdev_for_each_mc_addr(ha, dev) {
- if (i == mc_count)
- break;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- memcpy(mclist.addr[i++], ha->addr, ETH_ALEN);
-+#else
-+ memcpy(mclist.addr[i++], ha->dmi_addr, ETH_ALEN);
-+#endif
- }
-
- err = hw->ops->write_ltv(hw, USER_BAP,
---- a/drivers/net/wireless/orinoco/hw.h
-+++ b/drivers/net/wireless/orinoco/hw.h
-@@ -22,6 +22,9 @@
-
- /* Forward declarations */
- struct orinoco_private;
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+struct dev_addr_list;
-+#endif
-
- int determine_fw_capabilities(struct orinoco_private *priv, char *fw_name,
- size_t fw_name_len, u32 *hw_ver);
---- a/drivers/net/wireless/p54/main.c
-+++ b/drivers/net/wireless/p54/main.c
-@@ -364,11 +364,18 @@ out:
- return ret;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- static u64 p54_prepare_multicast(struct ieee80211_hw *dev,
- struct netdev_hw_addr_list *mc_list)
-+#else
-+static u64 p54_prepare_multicast(struct ieee80211_hw *dev, int mc_count,
-+ struct dev_addr_list *ha)
-+#endif
- {
- struct p54_common *priv = dev->priv;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr *ha;
-+#endif
- int i;
-
- BUILD_BUG_ON(ARRAY_SIZE(priv->mc_maclist) !=
-@@ -378,12 +385,23 @@ static u64 p54_prepare_multicast(struct
- * Otherwise the firmware will drop it and ARP will no longer work.
- */
- i = 1;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- priv->mc_maclist_num = netdev_hw_addr_list_count(mc_list) + i;
- netdev_hw_addr_list_for_each(ha, mc_list) {
- memcpy(&priv->mc_maclist[i], ha->addr, ETH_ALEN);
-+#else
-+ priv->mc_maclist_num = mc_count + i;
-+ while (i <= mc_count) {
-+ if (!ha)
-+ break;
-+ memcpy(&priv->mc_maclist[i], ha->dmi_addr, ETH_ALEN);
-+#endif
- i++;
- if (i >= ARRAY_SIZE(priv->mc_maclist))
- break;
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
-+ ha = ha->next;
-+#endif
- }
-
- return 1; /* update */
---- a/drivers/net/wireless/rndis_wlan.c
-+++ b/drivers/net/wireless/rndis_wlan.c
-@@ -1629,7 +1629,11 @@ static void set_multicast_list(struct us
-
- netdev_for_each_mc_addr(ha, usbdev->net)
- memcpy(mc_addrs + i++ * ETH_ALEN,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ha->addr, ETH_ALEN);
-+#else
-+ ha->dmi_addr, ETH_ALEN);
-+#endif
- }
- netif_addr_unlock_bh(usbdev->net);
-
---- a/drivers/net/wireless/rtl818x/rtl8180/dev.c
-+++ b/drivers/net/wireless/rtl818x/rtl8180/dev.c
-@@ -818,10 +818,19 @@ static void rtl8180_bss_info_changed(str
- }
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- static u64 rtl8180_prepare_multicast(struct ieee80211_hw *dev,
- struct netdev_hw_addr_list *mc_list)
-+#else
-+static u64 rtl8180_prepare_multicast(struct ieee80211_hw *dev, int mc_count,
-+ struct dev_addr_list *mc_list)
-+#endif
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- return netdev_hw_addr_list_count(mc_list);
-+#else
-+ return mc_count;
-+#endif
- }
-
- static void rtl8180_configure_filter(struct ieee80211_hw *dev,
---- a/drivers/net/wireless/rtl818x/rtl8187/dev.c
-+++ b/drivers/net/wireless/rtl818x/rtl8187/dev.c
-@@ -1290,9 +1290,17 @@ static void rtl8187_bss_info_changed(str
- }
-
- static u64 rtl8187_prepare_multicast(struct ieee80211_hw *dev,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count, struct dev_addr_list *mc_list)
-+#endif
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- return netdev_hw_addr_list_count(mc_list);
-+#else
-+ return mc_count;
-+#endif
- }
-
- static void rtl8187_configure_filter(struct ieee80211_hw *dev,
---- a/drivers/net/wireless/ti/wlcore/main.c
-+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -2952,11 +2952,20 @@ struct wl1271_filter_params {
- u8 mc_list[ACX_MC_ADDRESS_GROUP_MAX][ETH_ALEN];
- };
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- static u64 wl1271_op_prepare_multicast(struct ieee80211_hw *hw,
- struct netdev_hw_addr_list *mc_list)
-+#else
-+static u64 wl1271_op_prepare_multicast(struct ieee80211_hw *hw, int mc_count,
-+ struct dev_addr_list *mc_list)
-+#endif
- {
- struct wl1271_filter_params *fp;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr *ha;
-+#else
-+ int i;
-+#endif
-
- fp = kzalloc(sizeof(*fp), GFP_ATOMIC);
- if (!fp) {
-@@ -2965,16 +2974,40 @@ static u64 wl1271_op_prepare_multicast(s
- }
-
- /* update multicast filtering parameters */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- fp->mc_list_length = 0;
- if (netdev_hw_addr_list_count(mc_list) > ACX_MC_ADDRESS_GROUP_MAX) {
-+#else
-+ fp->enabled = true;
-+ if (mc_count > ACX_MC_ADDRESS_GROUP_MAX) {
-+ mc_count = 0;
-+#endif
- fp->enabled = false;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- } else {
- fp->enabled = true;
- netdev_hw_addr_list_for_each(ha, mc_list) {
-+#else
-+ }
-+
-+ fp->mc_list_length = 0;
-+ for (i = 0; i < mc_count; i++) {
-+ if (mc_list->da_addrlen == ETH_ALEN) {
-+#endif
- memcpy(fp->mc_list[fp->mc_list_length],
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ha->addr, ETH_ALEN);
-+#else
-+ mc_list->da_addr, ETH_ALEN);
-+#endif
- fp->mc_list_length++;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- }
-+#else
-+ } else
-+ wl1271_warning("Unknown mc address length.");
-+ mc_list = mc_list->next;
-+#endif
- }
-
- return (u64)(unsigned long)fp;
---- a/drivers/net/wireless/zd1211rw/zd_mac.c
-+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
-@@ -1215,17 +1215,34 @@ static void zd_process_intr(struct work_
-
-
- static u64 zd_op_prepare_multicast(struct ieee80211_hw *hw,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count, struct dev_addr_list *ha)
-+#endif
- {
- struct zd_mac *mac = zd_hw_mac(hw);
- struct zd_mc_hash hash;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr *ha;
-+#else
-+ int i;
-+#endif
-
- zd_mc_clear(&hash);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- netdev_hw_addr_list_for_each(ha, mc_list) {
- dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", ha->addr);
- zd_mc_add_addr(&hash, ha->addr);
-+#else
-+ for (i = 0; i < mc_count; i++) {
-+ if (!ha)
-+ break;
-+ dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", ha->dmi_addr);
-+ zd_mc_add_addr(&hash, ha->dmi_addr);
-+ ha = ha->next;
-+#endif
- }
-
- return hash.low | ((u64)hash.high << 32);
---- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
-+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
-@@ -103,7 +103,11 @@ static void _brcmf_set_multicast_list(st
- netdev_for_each_mc_addr(ha, ndev) {
- if (!cnt)
- break;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- memcpy(bufp, ha->addr, ETH_ALEN);
-+#else
-+ memcpy(bufp, ha->dmi_addr, ETH_ALEN);
-+#endif
- bufp += ETH_ALEN;
- cnt--;
- }
---- a/include/net/mac80211.h
-+++ b/include/net/mac80211.h
-@@ -2604,14 +2604,24 @@ struct ieee80211_ops {
- void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
-
- u64 (*prepare_multicast)(struct ieee80211_hw *hw,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list);
-+#else
-+ int mc_count, struct dev_addr_list *mc_list);
-+#endif
- void (*configure_filter)(struct ieee80211_hw *hw,
- unsigned int changed_flags,
- unsigned int *total_flags,
- u64 multicast);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- void (*set_multicast_list)(struct ieee80211_hw *hw,
- struct ieee80211_vif *vif, bool allmulti,
- struct netdev_hw_addr_list *mc_list);
-+#else
-+ void (*set_multicast_list)(struct ieee80211_hw *hw,
-+ struct ieee80211_vif *vif, bool allmulti,
-+ int mc_count, struct dev_addr_list *ha);
-+#endif
-
- int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
- bool set);
---- a/net/bluetooth/bnep/netdev.c
-+++ b/net/bluetooth/bnep/netdev.c
-@@ -93,8 +93,13 @@ static void bnep_net_set_mc_list(struct
- netdev_for_each_mc_addr(ha, dev) {
- if (i == BNEP_MAX_MULTICAST_FILTERS)
- break;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN);
- memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN);
-+#else
-+ memcpy(__skb_put(skb, ETH_ALEN), ha->dmi_addr, ETH_ALEN);
-+ memcpy(__skb_put(skb, ETH_ALEN), ha->dmi_addr, ETH_ALEN);
-+#endif
-
- i++;
- }
---- a/net/mac80211/driver-ops.h
-+++ b/net/mac80211/driver-ops.h
-@@ -227,20 +227,35 @@ static inline void drv_bss_info_changed(
- }
-
- static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list *mc_list)
-+#else
-+ int mc_count,
-+ struct dev_addr_list *mc_list)
-+#endif
- {
- u64 ret = 0;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- trace_drv_prepare_multicast(local, mc_list->count);
-+#else
-+ trace_drv_prepare_multicast(local, mc_count);
-+#endif
-
- if (local->ops->prepare_multicast)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- ret = local->ops->prepare_multicast(&local->hw, mc_list);
-+#else
-+ ret = local->ops->prepare_multicast(&local->hw, mc_count,
-+ mc_list);
-+#endif
-
- trace_drv_return_u64(local, ret);
-
- return ret;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- static inline void drv_set_multicast_list(struct ieee80211_local *local,
- struct ieee80211_sub_if_data *sdata,
- struct netdev_hw_addr_list *mc_list)
-@@ -256,6 +271,23 @@ static inline void drv_set_multicast_lis
- allmulti, mc_list);
- trace_drv_return_void(local);
- }
-+#else
-+static inline void drv_set_multicast_list(struct ieee80211_local *local,
-+ struct ieee80211_sub_if_data *sdata,
-+ int mc_count, struct dev_addr_list *ha)
-+{
-+ bool allmulti = sdata->flags & IEEE80211_SDATA_ALLMULTI;
-+
-+ trace_drv_set_multicast_list(local, sdata, mc_count);
-+
-+ check_sdata_in_driver(sdata);
-+
-+ if (local->ops->set_multicast_list)
-+ local->ops->set_multicast_list(&local->hw, &sdata->vif,
-+ allmulti, mc_count, ha);
-+ trace_drv_return_void(local);
-+}
-+#endif
-
- static inline void drv_configure_filter(struct ieee80211_local *local,
- unsigned int changed_flags,
---- a/net/mac80211/ieee80211_i.h
-+++ b/net/mac80211/ieee80211_i.h
-@@ -907,7 +907,12 @@ struct ieee80211_local {
- struct work_struct reconfig_filter;
-
- /* aggregated multicast list */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct netdev_hw_addr_list mc_list;
-+#else
-+ struct dev_addr_list *mc_list;
-+ int mc_count;
-+#endif
-
- bool tim_in_locked_section; /* see ieee80211_beacon_get() */
-
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -743,8 +743,13 @@ static void ieee80211_do_stop(struct iee
- if (sdata->dev) {
- netif_addr_lock_bh(sdata->dev);
- spin_lock_bh(&local->filter_lock);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- __hw_addr_unsync(&local->mc_list, &sdata->dev->mc,
- sdata->dev->addr_len);
-+#else
-+ __dev_addr_unsync(&local->mc_list, &local->mc_count,
-+ &sdata->dev->mc_list, &sdata->dev->mc_count);
-+#endif
- spin_unlock_bh(&local->filter_lock);
- netif_addr_unlock_bh(sdata->dev);
-
-@@ -927,10 +932,20 @@ static void ieee80211_set_multicast_list
- if (sdata->vif.type != NL80211_IFTYPE_MONITOR &&
- sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
- sdata->vif.type != NL80211_IFTYPE_AP)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- drv_set_multicast_list(local, sdata, &dev->mc);
-+#else
-+ drv_set_multicast_list(local, sdata, dev->mc_count,
-+ dev->mc_list);
-+#endif
-
- spin_lock_bh(&local->filter_lock);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- __hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len);
-+#else
-+ __dev_addr_sync(&local->mc_list, &local->mc_count,
-+ &dev->mc_list, &dev->mc_count);
-+#endif
- spin_unlock_bh(&local->filter_lock);
- ieee80211_queue_work(&local->hw, &local->reconfig_filter);
- }
---- a/net/mac80211/main.c
-+++ b/net/mac80211/main.c
-@@ -71,7 +71,11 @@ void ieee80211_configure_filter(struct i
- spin_lock_bh(&local->filter_lock);
- changed_flags = local->filter_flags ^ new_flags;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- mc = drv_prepare_multicast(local, &local->mc_list);
-+#else
-+ mc = drv_prepare_multicast(local, local->mc_count, local->mc_list);
-+#endif
- spin_unlock_bh(&local->filter_lock);
-
- /* be a bit nasty */
-@@ -592,9 +596,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
- wiphy->vht_capa_mod_mask = &mac80211_vht_capa_mod_mask;
-
- INIT_LIST_HEAD(&local->interfaces);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-
- __hw_addr_init(&local->mc_list);
-
-+#endif
- mutex_init(&local->iflist_mtx);
- mutex_init(&local->mtx);
-
---- a/drivers/net/wireless/ath/ath6kl/main.c
-+++ b/drivers/net/wireless/ath/ath6kl/main.c
-@@ -1205,7 +1205,11 @@ static void ath6kl_set_multicast_list(st
- list_for_each_entry_safe(mc_filter, tmp, &vif->mc_filter, list) {
- found = false;
- netdev_for_each_mc_addr(ha, ndev) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- if (memcmp(ha->addr, mc_filter->hw_addr,
-+#else
-+ if (memcmp(ha->dmi_addr, mc_filter->hw_addr,
-+#endif
- ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE) == 0) {
- found = true;
- break;
-@@ -1239,7 +1243,11 @@ static void ath6kl_set_multicast_list(st
- netdev_for_each_mc_addr(ha, ndev) {
- found = false;
- list_for_each_entry(mc_filter, &vif->mc_filter, list) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- if (memcmp(ha->addr, mc_filter->hw_addr,
-+#else
-+ if (memcmp(ha->dmi_addr, mc_filter->hw_addr,
-+#endif
- ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE) == 0) {
- found = true;
- break;
-@@ -1254,7 +1262,11 @@ static void ath6kl_set_multicast_list(st
- goto out;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- memcpy(mc_filter->hw_addr, ha->addr,
-+#else
-+ memcpy(mc_filter->hw_addr, ha->dmi_addr,
-+#endif
- ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE);
- /* Set the multicast filter */
- ath6kl_dbg(ATH6KL_DBG_TRC,
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/INFO b/patches/collateral-evolutions/network/25-multicast-list_head/INFO
new file mode 100644
index 00000000..09b605b2
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/INFO
@@ -0,0 +1,13 @@
+Backport commit 22bedad3ce112d5ca1eaf043d4990fa2ed698c87:
+ net: convert multicast list to list_head
+
+ Converts the list and the core manipulating with it to be the same as uc_list.
+
+ +uses two functions for adding/removing mc address (normal and "global"
+ variant) instead of a function parameter.
+ +removes dev_mcast.c completely.
+ +exposes netdev_hw_addr_list_* macros along with __hw_addr_* functions for
+ manipulation with lists on a sandbox (used in bonding and 80211 drivers)
+
+This also backport commit 2f787b0b76bf5de2eaa3ca3a29d89123ae03c856
+
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
new file mode 100644
index 00000000..84961af6
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+@@ -410,7 +410,11 @@
+
+ /* comoute mc addresses' hash value ,and put it into hash table */
+ netdev_for_each_mc_addr(ha, netdev) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ hash_value = atl1c_hash_mc_addr(hw, ha->addr);
++#else
++ hash_value = atl1c_hash_mc_addr(hw, ha->dmi_addr);
++#endif
+ atl1c_hash_set(hw, hash_value);
+ }
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.c
new file mode 100644
index 00000000..830f8c70
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atl1e_atl1e_main.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+@@ -308,7 +308,11 @@
+
+ /* comoute mc addresses' hash value ,and put it into hash table */
+ netdev_for_each_mc_addr(ha, netdev) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ hash_value = atl1e_hash_mc_addr(hw, ha->addr);
++#else
++ hash_value = atl1e_hash_mc_addr(hw, ha->dmi_addr);
++#endif
+ atl1e_hash_set(hw, hash_value);
+ }
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.c
new file mode 100644
index 00000000..3567501f
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atl2.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/ethernet/atheros/atlx/atl2.c
++++ b/drivers/net/ethernet/atheros/atlx/atl2.c
+@@ -159,7 +159,11 @@
+
+ /* comoute mc addresses' hash value ,and put it into hash table */
+ netdev_for_each_mc_addr(ha, netdev) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ hash_value = atl2_hash_mc_addr(hw, ha->addr);
++#else
++ hash_value = atl2_hash_mc_addr(hw, ha->dmi_addr);
++#endif
+ atl2_hash_set(hw, hash_value);
+ }
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.c
new file mode 100644
index 00000000..c41d4c3a
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_atheros_atlx_atlx.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/ethernet/atheros/atlx/atlx.c
++++ b/drivers/net/ethernet/atheros/atlx/atlx.c
+@@ -149,7 +149,11 @@
+
+ /* compute mc addresses' hash value ,and put it into hash table */
+ netdev_for_each_mc_addr(ha, netdev) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ hash_value = atlx_hash_mc_addr(hw, ha->addr);
++#else
++ hash_value = atlx_hash_mc_addr(hw, ha->dmi_addr);
++#endif
+ atlx_hash_set(hw, hash_value);
+ }
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.c
new file mode 100644
index 00000000..ad9fde3e
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_ethernet_broadcom_b44.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/ethernet/broadcom/b44.c
++++ b/drivers/net/ethernet/broadcom/b44.c
+@@ -1693,7 +1693,11 @@
+ netdev_for_each_mc_addr(ha, dev) {
+ if (i == num_ents)
+ break;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ __b44_cam_write(bp, ha->addr, i++ + 1);
++#else
++ __b44_cam_write(bp, ha->dmi_addr, i++ + 1);
++#endif
+ }
+ return i+1;
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_adm8211.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_adm8211.c
new file mode 100644
index 00000000..1dd519e2
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_adm8211.c
@@ -0,0 +1,41 @@
+--- a/drivers/net/wireless/adm8211.c
++++ b/drivers/net/wireless/adm8211.c
+@@ -1320,19 +1320,37 @@
+ }
+
+ static u64 adm8211_prepare_multicast(struct ieee80211_hw *hw,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count, struct dev_addr_list *ha)
++#endif
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ unsigned int bit_nr;
+- u32 mc_filter[2];
+ struct netdev_hw_addr *ha;
++#else
++ unsigned int bit_nr, i;
++#endif
++ u32 mc_filter[2];
+
+ mc_filter[1] = mc_filter[0] = 0;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ netdev_hw_addr_list_for_each(ha, mc_list) {
+ bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
++#else
++ for (i = 0; i < mc_count; i++) {
++ if (!ha)
++ break;
++ bit_nr = ether_crc(ETH_ALEN, ha->dmi_addr) >> 26;
++#endif
+
+ bit_nr &= 0x3F;
+ mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ ha = ha->next;
++#endif
+ }
+
+ return mc_filter[0] | ((u64)(mc_filter[1]) << 32);
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath5k_mac80211-ops.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath5k_mac80211-ops.c
new file mode 100644
index 00000000..b9d8ba45
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath5k_mac80211-ops.c
@@ -0,0 +1,55 @@
+--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
++++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
+@@ -318,20 +318,42 @@
+
+ static u64
+ ath5k_prepare_multicast(struct ieee80211_hw *hw,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count, struct dev_addr_list *ha)
++#endif
+ {
+ u32 mfilt[2], val;
+ u8 pos;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
++#else
++ int i;
++#endif
+
+ mfilt[0] = 0;
+ mfilt[1] = 1;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ netdev_hw_addr_list_for_each(ha, mc_list) {
++#else
++ for (i = 0; i < mc_count; i++) {
++ if (!ha)
++ break;
++#endif
+ /* calculate XOR of eight 6-bit values */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ val = get_unaligned_le32(ha->addr + 0);
++#else
++ val = get_unaligned_le32(ha->dmi_addr + 0);
++#endif
+ pos = (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ val = get_unaligned_le32(ha->addr + 3);
++#else
++ val = get_unaligned_le32(ha->dmi_addr + 3);
++#endif
+ pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
+ pos &= 0x3f;
+ mfilt[pos / 32] |= (1 << (pos % 32));
+@@ -340,6 +362,9 @@
+ * need to inform below not to reset the mcast */
+ /* ath5k_hw_set_mcast_filterindex(ah,
+ * ha->addr[5]); */
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ ha = ha->next;
++#endif
+ }
+
+ return ((u64)(mfilt[1]) << 32) | mfilt[0];
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.c
new file mode 100644
index 00000000..6923fea1
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_ath6kl_main.c
@@ -0,0 +1,38 @@
+--- a/drivers/net/wireless/ath/ath6kl/main.c
++++ b/drivers/net/wireless/ath/ath6kl/main.c
+@@ -1205,7 +1205,11 @@
+ list_for_each_entry_safe(mc_filter, tmp, &vif->mc_filter, list) {
+ found = false;
+ netdev_for_each_mc_addr(ha, ndev) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ if (memcmp(ha->addr, mc_filter->hw_addr,
++#else
++ if (memcmp(ha->dmi_addr, mc_filter->hw_addr,
++#endif
+ ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE) == 0) {
+ found = true;
+ break;
+@@ -1239,7 +1243,11 @@
+ netdev_for_each_mc_addr(ha, ndev) {
+ found = false;
+ list_for_each_entry(mc_filter, &vif->mc_filter, list) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ if (memcmp(ha->addr, mc_filter->hw_addr,
++#else
++ if (memcmp(ha->dmi_addr, mc_filter->hw_addr,
++#endif
+ ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE) == 0) {
+ found = true;
+ break;
+@@ -1254,7 +1262,11 @@
+ goto out;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ memcpy(mc_filter->hw_addr, ha->addr,
++#else
++ memcpy(mc_filter->hw_addr, ha->dmi_addr,
++#endif
+ ATH6KL_MCAST_FILTER_MAC_ADDR_SIZE);
+ /* Set the multicast filter */
+ ath6kl_dbg(ATH6KL_DBG_TRC,
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_carl9170_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_carl9170_main.c
new file mode 100644
index 00000000..0b850d71
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ath_carl9170_main.c
@@ -0,0 +1,38 @@
+--- a/drivers/net/wireless/ath/carl9170/main.c
++++ b/drivers/net/wireless/ath/carl9170/main.c
+@@ -967,17 +967,35 @@
+ return err;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ static u64 carl9170_op_prepare_multicast(struct ieee80211_hw *hw,
+ struct netdev_hw_addr_list *mc_list)
++#else
++static u64 carl9170_op_prepare_multicast(struct ieee80211_hw *hw, int mc_count,
++ struct dev_addr_list *ha)
++#endif
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
++#else
++ int i;
++#endif
+ u64 mchash;
+
+ /* always get broadcast frames */
+ mchash = 1ULL << (0xff >> 2);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ netdev_hw_addr_list_for_each(ha, mc_list)
+ mchash |= 1ULL << (ha->addr[5] >> 2);
++#else
++ for (i = 0; i < mc_count; i++) {
++ if (WARN_ON(!ha))
++ break;
++ mchash |= 1ULL << (ha->dmi_addr[5] >> 2);
++ ha = ha->next;
++ }
++#endif
+
+ return mchash;
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.c
new file mode 100644
index 00000000..a6ca1115
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_brcm80211_brcmfmac_dhd_linux.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+@@ -103,7 +103,11 @@
+ netdev_for_each_mc_addr(ha, ndev) {
+ if (!cnt)
+ break;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ memcpy(bufp, ha->addr, ETH_ALEN);
++#else
++ memcpy(bufp, ha->dmi_addr, ETH_ALEN);
++#endif
+ bufp += ETH_ALEN;
+ cnt--;
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.c
new file mode 100644
index 00000000..8aa9d171
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_main.c
@@ -0,0 +1,37 @@
+--- a/drivers/net/wireless/libertas/main.c
++++ b/drivers/net/wireless/libertas/main.c
+@@ -349,18 +349,34 @@
+ netif_addr_lock_bh(dev);
+ cnt = netdev_mc_count(dev);
+ netdev_for_each_mc_addr(ha, dev) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ if (mac_in_list(cmd->maclist, nr_addrs, ha->addr)) {
++#else
++ if (mac_in_list(cmd->maclist, nr_addrs, ha->dmi_addr)) {
++#endif
+ lbs_deb_net("mcast address %s:%pM skipped\n", dev->name,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ha->addr);
++#else
++ ha->dmi_addr);
++#endif
+ cnt--;
+ continue;
+ }
+
+ if (i == MRVDRV_MAX_MULTICAST_LIST_SIZE)
+ break;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ memcpy(&cmd->maclist[6*i], ha->addr, ETH_ALEN);
++#else
++ memcpy(&cmd->maclist[6*i], ha->dmi_addr, ETH_ALEN);
++#endif
+ lbs_deb_net("mcast address %s:%pM added to filter\n", dev->name,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ha->addr);
++#else
++ ha->dmi_addr);
++#endif
+ i++;
+ cnt--;
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_tf_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_tf_main.c
new file mode 100644
index 00000000..f681b71b
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_libertas_tf_main.c
@@ -0,0 +1,39 @@
+--- a/drivers/net/wireless/libertas_tf/main.c
++++ b/drivers/net/wireless/libertas_tf/main.c
+@@ -421,20 +421,36 @@
+ }
+
+ static u64 lbtf_op_prepare_multicast(struct ieee80211_hw *hw,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count, struct dev_addr_list *ha)
++#endif
+ {
+ struct lbtf_private *priv = hw->priv;
+ int i;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
+ int mc_count = netdev_hw_addr_list_count(mc_list);
++#endif
+
+ if (!mc_count || mc_count > MRVDRV_MAX_MULTICAST_LIST_SIZE)
+ return mc_count;
+
+ priv->nr_of_multicastmacaddr = mc_count;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ i = 0;
+ netdev_hw_addr_list_for_each(ha, mc_list)
+ memcpy(&priv->multicastlist[i++], ha->addr, ETH_ALEN);
++#else
++ for (i = 0; i < mc_count; i++) {
++ if (!ha)
++ break;
++ memcpy(&priv->multicastlist[i], ha->da_addr,
++ ETH_ALEN);
++ ha = ha->next;
++ }
++#endif
+
+ return mc_count;
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.c
new file mode 100644
index 00000000..e5ed0b93
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_debugfs.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/mwifiex/debugfs.c
++++ b/drivers/net/wireless/mwifiex/debugfs.c
+@@ -215,7 +215,11 @@
+
+ netdev_for_each_mc_addr(ha, netdev)
+ p += sprintf(p, "multicast_address[%d]=\"%pM\"\n",
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ i++, ha->addr);
++#else
++ i++, ha->dmi_addr);
++#endif
+ }
+
+ p += sprintf(p, "num_tx_bytes = %lu\n", priv->stats.tx_bytes);
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.c
new file mode 100644
index 00000000..fb9ca756
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwifiex_sta_ioctl.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/mwifiex/sta_ioctl.c
++++ b/drivers/net/wireless/mwifiex/sta_ioctl.c
+@@ -43,7 +43,11 @@
+ struct netdev_hw_addr *ha;
+
+ netdev_for_each_mc_addr(ha, dev)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ memcpy(&mlist->mac_list[i++], ha->addr, ETH_ALEN);
++#else
++ memcpy(&mlist->mac_list[i++], ha->dmi_addr, ETH_ALEN);
++#endif
+
+ return i;
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwl8k.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwl8k.c
new file mode 100644
index 00000000..ab703c63
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_mwl8k.c
@@ -0,0 +1,88 @@
+--- a/drivers/net/wireless/mwl8k.c
++++ b/drivers/net/wireless/mwl8k.c
+@@ -2656,15 +2656,21 @@
+
+ static struct mwl8k_cmd_pkt *
+ __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count, struct dev_addr_list *ha)
++#endif
+ {
+ struct mwl8k_priv *priv = hw->priv;
+ struct mwl8k_cmd_mac_multicast_adr *cmd;
+ int size;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ int mc_count = 0;
+
+ if (mc_list)
+ mc_count = netdev_hw_addr_list_count(mc_list);
++#endif
+
+ if (allmulti || mc_count > priv->num_mcaddrs) {
+ allmulti = 1;
+@@ -2685,13 +2691,27 @@
+ if (allmulti) {
+ cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST);
+ } else if (mc_count) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
+ int i = 0;
++#else
++ int i;
++#endif
+
+ cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_MULTICAST);
+ cmd->numaddr = cpu_to_le16(mc_count);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ netdev_hw_addr_list_for_each(ha, mc_list) {
+ memcpy(cmd->addr[i], ha->addr, ETH_ALEN);
++#else
++ for (i = 0; i < mc_count && ha; i++) {
++ if (ha->da_addrlen != ETH_ALEN) {
++ kfree(cmd);
++ return NULL;
++ }
++ memcpy(cmd->addr[i], ha->da_addr, ETH_ALEN);
++ ha = ha->next;
++#endif
+ }
+ }
+
+@@ -5022,7 +5042,11 @@
+ }
+
+ static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count, struct dev_addr_list *ha)
++#endif
+ {
+ struct mwl8k_cmd_pkt *cmd;
+
+@@ -5033,7 +5057,11 @@
+ * we'll end up throwing this packet away and creating a new
+ * one in mwl8k_configure_filter().
+ */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_list);
++#else
++ cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_count, ha);
++#endif
+
+ return (unsigned long)cmd;
+ }
+@@ -5155,7 +5183,11 @@
+ */
+ if (*total_flags & FIF_ALLMULTI) {
+ kfree(cmd);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, NULL);
++#else
++ cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, 0, NULL);
++#endif
+ }
+
+ if (cmd != NULL) {
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.c
new file mode 100644
index 00000000..7b266daa
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/orinoco/hw.c
++++ b/drivers/net/wireless/orinoco/hw.c
+@@ -1093,7 +1093,11 @@
+ netdev_for_each_mc_addr(ha, dev) {
+ if (i == mc_count)
+ break;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ memcpy(mclist.addr[i++], ha->addr, ETH_ALEN);
++#else
++ memcpy(mclist.addr[i++], ha->dmi_addr, ETH_ALEN);
++#endif
+ }
+
+ err = hw->ops->write_ltv(hw, USER_BAP,
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.h b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.h
new file mode 100644
index 00000000..e01119be
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_orinoco_hw.h
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/orinoco/hw.h
++++ b/drivers/net/wireless/orinoco/hw.h
+@@ -22,6 +22,9 @@
+
+ /* Forward declarations */
+ struct orinoco_private;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++struct dev_addr_list;
++#endif
+
+ int determine_fw_capabilities(struct orinoco_private *priv, char *fw_name,
+ size_t fw_name_len, u32 *hw_ver);
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_p54_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_p54_main.c
new file mode 100644
index 00000000..7c12eefb
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_p54_main.c
@@ -0,0 +1,45 @@
+--- a/drivers/net/wireless/p54/main.c
++++ b/drivers/net/wireless/p54/main.c
+@@ -364,11 +364,18 @@
+ return ret;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ static u64 p54_prepare_multicast(struct ieee80211_hw *dev,
+ struct netdev_hw_addr_list *mc_list)
++#else
++static u64 p54_prepare_multicast(struct ieee80211_hw *dev, int mc_count,
++ struct dev_addr_list *ha)
++#endif
+ {
+ struct p54_common *priv = dev->priv;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
++#endif
+ int i;
+
+ BUILD_BUG_ON(ARRAY_SIZE(priv->mc_maclist) !=
+@@ -378,12 +385,23 @@
+ * Otherwise the firmware will drop it and ARP will no longer work.
+ */
+ i = 1;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ priv->mc_maclist_num = netdev_hw_addr_list_count(mc_list) + i;
+ netdev_hw_addr_list_for_each(ha, mc_list) {
+ memcpy(&priv->mc_maclist[i], ha->addr, ETH_ALEN);
++#else
++ priv->mc_maclist_num = mc_count + i;
++ while (i <= mc_count) {
++ if (!ha)
++ break;
++ memcpy(&priv->mc_maclist[i], ha->dmi_addr, ETH_ALEN);
++#endif
+ i++;
+ if (i >= ARRAY_SIZE(priv->mc_maclist))
+ break;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
++ ha = ha->next;
++#endif
+ }
+
+ return 1; /* update */
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.c
new file mode 100644
index 00000000..bac06a41
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rndis_wlan.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/rndis_wlan.c
++++ b/drivers/net/wireless/rndis_wlan.c
+@@ -1629,7 +1629,11 @@
+
+ netdev_for_each_mc_addr(ha, usbdev->net)
+ memcpy(mc_addrs + i++ * ETH_ALEN,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ha->addr, ETH_ALEN);
++#else
++ ha->dmi_addr, ETH_ALEN);
++#endif
+ }
+ netif_addr_unlock_bh(usbdev->net);
+
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8180_dev.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8180_dev.c
new file mode 100644
index 00000000..499eb620
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8180_dev.c
@@ -0,0 +1,22 @@
+--- a/drivers/net/wireless/rtl818x/rtl8180/dev.c
++++ b/drivers/net/wireless/rtl818x/rtl8180/dev.c
+@@ -818,10 +818,19 @@
+ }
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ static u64 rtl8180_prepare_multicast(struct ieee80211_hw *dev,
+ struct netdev_hw_addr_list *mc_list)
++#else
++static u64 rtl8180_prepare_multicast(struct ieee80211_hw *dev, int mc_count,
++ struct dev_addr_list *mc_list)
++#endif
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ return netdev_hw_addr_list_count(mc_list);
++#else
++ return mc_count;
++#endif
+ }
+
+ static void rtl8180_configure_filter(struct ieee80211_hw *dev,
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8187_dev.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8187_dev.c
new file mode 100644
index 00000000..536744cc
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_rtl818x_rtl8187_dev.c
@@ -0,0 +1,20 @@
+--- a/drivers/net/wireless/rtl818x/rtl8187/dev.c
++++ b/drivers/net/wireless/rtl818x/rtl8187/dev.c
+@@ -1290,9 +1290,17 @@
+ }
+
+ static u64 rtl8187_prepare_multicast(struct ieee80211_hw *dev,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count, struct dev_addr_list *mc_list)
++#endif
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ return netdev_hw_addr_list_count(mc_list);
++#else
++ return mc_count;
++#endif
+ }
+
+ static void rtl8187_configure_filter(struct ieee80211_hw *dev,
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ti_wlcore_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ti_wlcore_main.c
new file mode 100644
index 00000000..0cb7c4b8
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_ti_wlcore_main.c
@@ -0,0 +1,64 @@
+--- a/drivers/net/wireless/ti/wlcore/main.c
++++ b/drivers/net/wireless/ti/wlcore/main.c
+@@ -2952,11 +2952,20 @@
+ u8 mc_list[ACX_MC_ADDRESS_GROUP_MAX][ETH_ALEN];
+ };
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ static u64 wl1271_op_prepare_multicast(struct ieee80211_hw *hw,
+ struct netdev_hw_addr_list *mc_list)
++#else
++static u64 wl1271_op_prepare_multicast(struct ieee80211_hw *hw, int mc_count,
++ struct dev_addr_list *mc_list)
++#endif
+ {
+ struct wl1271_filter_params *fp;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
++#else
++ int i;
++#endif
+
+ fp = kzalloc(sizeof(*fp), GFP_ATOMIC);
+ if (!fp) {
+@@ -2965,16 +2974,40 @@
+ }
+
+ /* update multicast filtering parameters */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ fp->mc_list_length = 0;
+ if (netdev_hw_addr_list_count(mc_list) > ACX_MC_ADDRESS_GROUP_MAX) {
++#else
++ fp->enabled = true;
++ if (mc_count > ACX_MC_ADDRESS_GROUP_MAX) {
++ mc_count = 0;
++#endif
+ fp->enabled = false;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ } else {
+ fp->enabled = true;
+ netdev_hw_addr_list_for_each(ha, mc_list) {
++#else
++ }
++
++ fp->mc_list_length = 0;
++ for (i = 0; i < mc_count; i++) {
++ if (mc_list->da_addrlen == ETH_ALEN) {
++#endif
+ memcpy(fp->mc_list[fp->mc_list_length],
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ha->addr, ETH_ALEN);
++#else
++ mc_list->da_addr, ETH_ALEN);
++#endif
+ fp->mc_list_length++;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ }
++#else
++ } else
++ wl1271_warning("Unknown mc address length.");
++ mc_list = mc_list->next;
++#endif
+ }
+
+ return (u64)(unsigned long)fp;
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_zd1211rw_zd_mac.c b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_zd1211rw_zd_mac.c
new file mode 100644
index 00000000..8223b7e5
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/drivers_net_wireless_zd1211rw_zd_mac.c
@@ -0,0 +1,37 @@
+--- a/drivers/net/wireless/zd1211rw/zd_mac.c
++++ b/drivers/net/wireless/zd1211rw/zd_mac.c
+@@ -1215,17 +1215,34 @@
+
+
+ static u64 zd_op_prepare_multicast(struct ieee80211_hw *hw,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count, struct dev_addr_list *ha)
++#endif
+ {
+ struct zd_mac *mac = zd_hw_mac(hw);
+ struct zd_mc_hash hash;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr *ha;
++#else
++ int i;
++#endif
+
+ zd_mc_clear(&hash);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ netdev_hw_addr_list_for_each(ha, mc_list) {
+ dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", ha->addr);
+ zd_mc_add_addr(&hash, ha->addr);
++#else
++ for (i = 0; i < mc_count; i++) {
++ if (!ha)
++ break;
++ dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", ha->dmi_addr);
++ zd_mc_add_addr(&hash, ha->dmi_addr);
++ ha = ha->next;
++#endif
+ }
+
+ return hash.low | ((u64)hash.high << 32);
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/include_net_mac80211.h b/patches/collateral-evolutions/network/25-multicast-list_head/include_net_mac80211.h
new file mode 100644
index 00000000..634e5edf
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/include_net_mac80211.h
@@ -0,0 +1,27 @@
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -2604,14 +2604,24 @@
+ void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
+
+ u64 (*prepare_multicast)(struct ieee80211_hw *hw,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list);
++#else
++ int mc_count, struct dev_addr_list *mc_list);
++#endif
+ void (*configure_filter)(struct ieee80211_hw *hw,
+ unsigned int changed_flags,
+ unsigned int *total_flags,
+ u64 multicast);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ void (*set_multicast_list)(struct ieee80211_hw *hw,
+ struct ieee80211_vif *vif, bool allmulti,
+ struct netdev_hw_addr_list *mc_list);
++#else
++ void (*set_multicast_list)(struct ieee80211_hw *hw,
++ struct ieee80211_vif *vif, bool allmulti,
++ int mc_count, struct dev_addr_list *ha);
++#endif
+
+ int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
+ bool set);
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.c b/patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.c
new file mode 100644
index 00000000..aca6602c
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/net_bluetooth_bnep_netdev.c
@@ -0,0 +1,16 @@
+--- a/net/bluetooth/bnep/netdev.c
++++ b/net/bluetooth/bnep/netdev.c
+@@ -93,8 +93,13 @@
+ netdev_for_each_mc_addr(ha, dev) {
+ if (i == BNEP_MAX_MULTICAST_FILTERS)
+ break;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN);
+ memcpy(__skb_put(skb, ETH_ALEN), ha->addr, ETH_ALEN);
++#else
++ memcpy(__skb_put(skb, ETH_ALEN), ha->dmi_addr, ETH_ALEN);
++ memcpy(__skb_put(skb, ETH_ALEN), ha->dmi_addr, ETH_ALEN);
++#endif
+
+ i++;
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_driver-ops.h b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_driver-ops.h
new file mode 100644
index 00000000..657d9ba8
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_driver-ops.h
@@ -0,0 +1,62 @@
+--- a/net/mac80211/driver-ops.h
++++ b/net/mac80211/driver-ops.h
+@@ -227,20 +227,35 @@
+ }
+
+ static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list *mc_list)
++#else
++ int mc_count,
++ struct dev_addr_list *mc_list)
++#endif
+ {
+ u64 ret = 0;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ trace_drv_prepare_multicast(local, mc_list->count);
++#else
++ trace_drv_prepare_multicast(local, mc_count);
++#endif
+
+ if (local->ops->prepare_multicast)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ ret = local->ops->prepare_multicast(&local->hw, mc_list);
++#else
++ ret = local->ops->prepare_multicast(&local->hw, mc_count,
++ mc_list);
++#endif
+
+ trace_drv_return_u64(local, ret);
+
+ return ret;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ static inline void drv_set_multicast_list(struct ieee80211_local *local,
+ struct ieee80211_sub_if_data *sdata,
+ struct netdev_hw_addr_list *mc_list)
+@@ -256,6 +271,23 @@
+ allmulti, mc_list);
+ trace_drv_return_void(local);
+ }
++#else
++static inline void drv_set_multicast_list(struct ieee80211_local *local,
++ struct ieee80211_sub_if_data *sdata,
++ int mc_count, struct dev_addr_list *ha)
++{
++ bool allmulti = sdata->flags & IEEE80211_SDATA_ALLMULTI;
++
++ trace_drv_set_multicast_list(local, sdata, mc_count);
++
++ check_sdata_in_driver(sdata);
++
++ if (local->ops->set_multicast_list)
++ local->ops->set_multicast_list(&local->hw, &sdata->vif,
++ allmulti, mc_count, ha);
++ trace_drv_return_void(local);
++}
++#endif
+
+ static inline void drv_configure_filter(struct ieee80211_local *local,
+ unsigned int changed_flags,
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_ieee80211_i.h b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_ieee80211_i.h
new file mode 100644
index 00000000..e8979891
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_ieee80211_i.h
@@ -0,0 +1,15 @@
+--- a/net/mac80211/ieee80211_i.h
++++ b/net/mac80211/ieee80211_i.h
+@@ -907,7 +907,12 @@
+ struct work_struct reconfig_filter;
+
+ /* aggregated multicast list */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ struct netdev_hw_addr_list mc_list;
++#else
++ struct dev_addr_list *mc_list;
++ int mc_count;
++#endif
+
+ bool tim_in_locked_section; /* see ieee80211_beacon_get() */
+
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_iface.c b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_iface.c
new file mode 100644
index 00000000..fc992476
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_iface.c
@@ -0,0 +1,37 @@
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -743,8 +743,13 @@
+ if (sdata->dev) {
+ netif_addr_lock_bh(sdata->dev);
+ spin_lock_bh(&local->filter_lock);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ __hw_addr_unsync(&local->mc_list, &sdata->dev->mc,
+ sdata->dev->addr_len);
++#else
++ __dev_addr_unsync(&local->mc_list, &local->mc_count,
++ &sdata->dev->mc_list, &sdata->dev->mc_count);
++#endif
+ spin_unlock_bh(&local->filter_lock);
+ netif_addr_unlock_bh(sdata->dev);
+
+@@ -927,10 +932,20 @@
+ if (sdata->vif.type != NL80211_IFTYPE_MONITOR &&
+ sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
+ sdata->vif.type != NL80211_IFTYPE_AP)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ drv_set_multicast_list(local, sdata, &dev->mc);
++#else
++ drv_set_multicast_list(local, sdata, dev->mc_count,
++ dev->mc_list);
++#endif
+
+ spin_lock_bh(&local->filter_lock);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ __hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len);
++#else
++ __dev_addr_sync(&local->mc_list, &local->mc_count,
++ &dev->mc_list, &dev->mc_count);
++#endif
+ spin_unlock_bh(&local->filter_lock);
+ ieee80211_queue_work(&local->hw, &local->reconfig_filter);
+ }
diff --git a/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_main.c b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_main.c
new file mode 100644
index 00000000..03c405b8
--- /dev/null
+++ b/patches/collateral-evolutions/network/25-multicast-list_head/net_mac80211_main.c
@@ -0,0 +1,26 @@
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -71,7 +71,11 @@
+ spin_lock_bh(&local->filter_lock);
+ changed_flags = local->filter_flags ^ new_flags;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+ mc = drv_prepare_multicast(local, &local->mc_list);
++#else
++ mc = drv_prepare_multicast(local, local->mc_count, local->mc_list);
++#endif
+ spin_unlock_bh(&local->filter_lock);
+
+ /* be a bit nasty */
+@@ -592,9 +596,11 @@
+ wiphy->vht_capa_mod_mask = &mac80211_vht_capa_mod_mask;
+
+ INIT_LIST_HEAD(&local->interfaces);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+
+ __hw_addr_init(&local->mc_list);
+
++#endif
+ mutex_init(&local->iflist_mtx);
+ mutex_init(&local->mtx);
+
diff --git a/patches/collateral-evolutions/network/26-sdio-quirks.patch b/patches/collateral-evolutions/network/26-sdio-quirks.patch
deleted file mode 100644
index d9340f61..00000000
--- a/patches/collateral-evolutions/network/26-sdio-quirks.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-The quirks attribute is not available on older kernels.
-
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -877,6 +877,7 @@ static int if_sdio_power_on(struct if_sd
- if (ret)
- goto release;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
- /* For 1-bit transfers to the 8686 model, we need to enable the
- * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
- * bit to allow access to non-vendor registers. */
-@@ -895,6 +896,7 @@ static int if_sdio_power_on(struct if_sd
- if (ret)
- goto disable;
- }
-+#endif
-
- card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
- if (ret)
---- a/drivers/net/wireless/mwifiex/sdio.c
-+++ b/drivers/net/wireless/mwifiex/sdio.c
-@@ -75,7 +75,9 @@ mwifiex_sdio_probe(struct sdio_func *fun
-
- card->func = func;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- func->card->quirks |= MMC_QUIRK_BLKSZ_FOR_BYTE_MODE;
-+#endif
-
- sdio_claim_host(func);
- ret = sdio_enable_func(func);
diff --git a/patches/collateral-evolutions/network/26-sdio-quirks/INFO b/patches/collateral-evolutions/network/26-sdio-quirks/INFO
new file mode 100644
index 00000000..e0b21b2c
--- /dev/null
+++ b/patches/collateral-evolutions/network/26-sdio-quirks/INFO
@@ -0,0 +1,2 @@
+The quirks attribute is not available on older kernels.
+
diff --git a/patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_libertas_if_sdio.c b/patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_libertas_if_sdio.c
new file mode 100644
index 00000000..7f848596
--- /dev/null
+++ b/patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_libertas_if_sdio.c
@@ -0,0 +1,18 @@
+--- a/drivers/net/wireless/libertas/if_sdio.c
++++ b/drivers/net/wireless/libertas/if_sdio.c
+@@ -877,6 +877,7 @@
+ if (ret)
+ goto release;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+ /* For 1-bit transfers to the 8686 model, we need to enable the
+ * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
+ * bit to allow access to non-vendor registers. */
+@@ -895,6 +896,7 @@
+ if (ret)
+ goto disable;
+ }
++#endif
+
+ card->ioport = sdio_readb(func, IF_SDIO_IOPORT, &ret);
+ if (ret)
diff --git a/patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_mwifiex_sdio.c b/patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_mwifiex_sdio.c
new file mode 100644
index 00000000..3f8fcf70
--- /dev/null
+++ b/patches/collateral-evolutions/network/26-sdio-quirks/drivers_net_wireless_mwifiex_sdio.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/mwifiex/sdio.c
++++ b/drivers/net/wireless/mwifiex/sdio.c
+@@ -75,7 +75,9 @@
+
+ card->func = func;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ func->card->quirks |= MMC_QUIRK_BLKSZ_FOR_BYTE_MODE;
++#endif
+
+ sdio_claim_host(func);
+ ret = sdio_enable_func(func);
diff --git a/patches/collateral-evolutions/network/27-hermes-read-pda-conflict.patch b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict.patch
deleted file mode 100644
index 4be543fc..00000000
--- a/patches/collateral-evolutions/network/27-hermes-read-pda-conflict.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Rename read_pda to something else because this symbol is used in a
-define for something else in arch/um/include/asm/pda.h on older kernels.
-
---- a/drivers/net/wireless/orinoco/fw.c
-+++ b/drivers/net/wireless/orinoco/fw.c
-@@ -123,7 +123,7 @@ orinoco_dl_firmware(struct orinoco_priva
- dev_dbg(dev, "Attempting to download firmware %s\n", firmware);
-
- /* Read current plug data */
-- err = hw->ops->read_pda(hw, pda, fw->pda_addr, fw->pda_size);
-+ err = hw->ops->read_pda_h(hw, pda, fw->pda_addr, fw->pda_size);
- dev_dbg(dev, "Read PDA returned %d\n", err);
- if (err)
- goto free;
-@@ -225,7 +225,7 @@ symbol_dl_image(struct orinoco_private *
- if (!pda)
- return -ENOMEM;
-
-- ret = hw->ops->read_pda(hw, pda, fw->pda_addr, fw->pda_size);
-+ ret = hw->ops->read_pda_h(hw, pda, fw->pda_addr, fw->pda_size);
- if (ret)
- goto free;
- }
---- a/drivers/net/wireless/orinoco/hermes.c
-+++ b/drivers/net/wireless/orinoco/hermes.c
-@@ -767,7 +767,7 @@ static const struct hermes_ops hermes_op
- .write_ltv = hermes_write_ltv,
- .bap_pread = hermes_bap_pread,
- .bap_pwrite = hermes_bap_pwrite,
-- .read_pda = hermes_read_pda,
-+ .read_pda_h = hermes_read_pda,
- .program_init = hermesi_program_init,
- .program_end = hermesi_program_end,
- .program = hermes_program_bytes,
---- a/drivers/net/wireless/orinoco/hermes.h
-+++ b/drivers/net/wireless/orinoco/hermes.h
-@@ -393,7 +393,7 @@ struct hermes_ops {
- u16 id, u16 offset);
- int (*bap_pwrite)(struct hermes *hw, int bap, const void *buf,
- int len, u16 id, u16 offset);
-- int (*read_pda)(struct hermes *hw, __le16 *pda,
-+ int (*read_pda_h)(struct hermes *hw, __le16 *pda,
- u32 pda_addr, u16 pda_len);
- int (*program_init)(struct hermes *hw, u32 entry_point);
- int (*program_end)(struct hermes *hw);
---- a/drivers/net/wireless/orinoco/orinoco_usb.c
-+++ b/drivers/net/wireless/orinoco/orinoco_usb.c
-@@ -1553,7 +1553,7 @@ static const struct hermes_ops ezusb_ops
- .read_ltv = ezusb_read_ltv,
- .write_ltv = ezusb_write_ltv,
- .bap_pread = ezusb_bap_pread,
-- .read_pda = ezusb_read_pda,
-+ .read_pda_h = ezusb_read_pda,
- .program_init = ezusb_program_init,
- .program_end = ezusb_program_end,
- .program = ezusb_program,
diff --git a/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/INFO b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/INFO
new file mode 100644
index 00000000..f4bf2d21
--- /dev/null
+++ b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/INFO
@@ -0,0 +1,3 @@
+Rename read_pda to something else because this symbol is used in a
+define for something else in arch/um/include/asm/pda.h on older kernels.
+
diff --git a/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_fw.c b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_fw.c
new file mode 100644
index 00000000..cd0b9be0
--- /dev/null
+++ b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_fw.c
@@ -0,0 +1,20 @@
+--- a/drivers/net/wireless/orinoco/fw.c
++++ b/drivers/net/wireless/orinoco/fw.c
+@@ -123,7 +123,7 @@
+ dev_dbg(dev, "Attempting to download firmware %s\n", firmware);
+
+ /* Read current plug data */
+- err = hw->ops->read_pda(hw, pda, fw->pda_addr, fw->pda_size);
++ err = hw->ops->read_pda_h(hw, pda, fw->pda_addr, fw->pda_size);
+ dev_dbg(dev, "Read PDA returned %d\n", err);
+ if (err)
+ goto free;
+@@ -225,7 +225,7 @@
+ if (!pda)
+ return -ENOMEM;
+
+- ret = hw->ops->read_pda(hw, pda, fw->pda_addr, fw->pda_size);
++ ret = hw->ops->read_pda_h(hw, pda, fw->pda_addr, fw->pda_size);
+ if (ret)
+ goto free;
+ }
diff --git a/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.c b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.c
new file mode 100644
index 00000000..e2f4b687
--- /dev/null
+++ b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/orinoco/hermes.c
++++ b/drivers/net/wireless/orinoco/hermes.c
+@@ -767,7 +767,7 @@
+ .write_ltv = hermes_write_ltv,
+ .bap_pread = hermes_bap_pread,
+ .bap_pwrite = hermes_bap_pwrite,
+- .read_pda = hermes_read_pda,
++ .read_pda_h = hermes_read_pda,
+ .program_init = hermesi_program_init,
+ .program_end = hermesi_program_end,
+ .program = hermes_program_bytes,
diff --git a/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.h b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.h
new file mode 100644
index 00000000..7ae3f0cb
--- /dev/null
+++ b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_hermes.h
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/orinoco/hermes.h
++++ b/drivers/net/wireless/orinoco/hermes.h
+@@ -393,7 +393,7 @@
+ u16 id, u16 offset);
+ int (*bap_pwrite)(struct hermes *hw, int bap, const void *buf,
+ int len, u16 id, u16 offset);
+- int (*read_pda)(struct hermes *hw, __le16 *pda,
++ int (*read_pda_h)(struct hermes *hw, __le16 *pda,
+ u32 pda_addr, u16 pda_len);
+ int (*program_init)(struct hermes *hw, u32 entry_point);
+ int (*program_end)(struct hermes *hw);
diff --git a/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_orinoco_usb.c b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_orinoco_usb.c
new file mode 100644
index 00000000..29c72445
--- /dev/null
+++ b/patches/collateral-evolutions/network/27-hermes-read-pda-conflict/drivers_net_wireless_orinoco_orinoco_usb.c
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/orinoco/orinoco_usb.c
++++ b/drivers/net/wireless/orinoco/orinoco_usb.c
+@@ -1553,7 +1553,7 @@
+ .read_ltv = ezusb_read_ltv,
+ .write_ltv = ezusb_write_ltv,
+ .bap_pread = ezusb_bap_pread,
+- .read_pda = ezusb_read_pda,
++ .read_pda_h = ezusb_read_pda,
+ .program_init = ezusb_program_init,
+ .program_end = ezusb_program_end,
+ .program = ezusb_program,
diff --git a/patches/collateral-evolutions/network/29-sdio_no_suspend.patch b/patches/collateral-evolutions/network/29-sdio_no_suspend.patch
deleted file mode 100644
index 8ac92fe6..00000000
--- a/patches/collateral-evolutions/network/29-sdio_no_suspend.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-Starting with commit 66fceb69b72ff7e9cd8da2ca70033982d5376e0e
-"libertas: Added callback functions to support SDIO suspend/resume."
-libertas uses new functions from the in kernel sdio framework for
-suspend and resume that are not backported.
-
---- a/drivers/net/wireless/ath/ath6kl/sdio.c
-+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
-@@ -817,6 +817,7 @@ out:
- return ret;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- static int ath6kl_set_sdio_pm_caps(struct ath6kl *ar)
- {
- struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
-@@ -950,6 +951,17 @@ static int ath6kl_sdio_resume(struct ath
-
- return 0;
- }
-+#else
-+static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow)
-+{
-+ return 0;
-+}
-+
-+static int ath6kl_sdio_resume(struct ath6kl *ar)
-+{
-+ return 0;
-+}
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
-
- /* set the window address register (using 4-byte register access ). */
- static int ath6kl_set_addrwin_reg(struct ath6kl *ar, u32 reg_addr, u32 addr)
-@@ -1263,7 +1275,7 @@ static const struct ath6kl_hif_ops ath6k
- .stop = ath6kl_sdio_stop,
- };
-
--#ifdef CONFIG_PM_SLEEP
-+#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-
- /*
- * Empty handlers so that mmc subsystem doesn't remove us entirely during
-@@ -1413,7 +1425,9 @@ static struct sdio_driver ath6kl_sdio_dr
- .id_table = ath6kl_sdio_devices,
- .probe = ath6kl_sdio_probe,
- .remove = ath6kl_sdio_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- .drv.pm = ATH6KL_SDIO_PM_OPS,
-+#endif
- };
-
- static int __init ath6kl_sdio_init(void)
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -1345,6 +1345,7 @@ static void if_sdio_remove(struct sdio_f
- lbs_deb_leave(LBS_DEB_SDIO);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- static int if_sdio_suspend(struct device *dev)
- {
- struct sdio_func *func = dev_to_sdio_func(dev);
-@@ -1403,15 +1404,18 @@ static const struct dev_pm_ops if_sdio_p
- .suspend = if_sdio_suspend,
- .resume = if_sdio_resume,
- };
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
-
- static struct sdio_driver if_sdio_driver = {
- .name = "libertas_sdio",
- .id_table = if_sdio_ids,
- .probe = if_sdio_probe,
- .remove = if_sdio_remove,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- .drv = {
- .pm = &if_sdio_pm_ops,
- },
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
- };
-
- /*******************************************************************/
---- a/drivers/net/wireless/mwifiex/sdio.c
-+++ b/drivers/net/wireless/mwifiex/sdio.c
-@@ -129,8 +129,10 @@ mwifiex_sdio_remove(struct sdio_func *fu
- wait_for_completion(&adapter->fw_load);
-
- if (user_rmmod) {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- if (adapter->is_suspended)
- mwifiex_sdio_resume(adapter->dev);
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
-
- for (i = 0; i < adapter->priv_num; i++)
- if ((GET_BSS_ROLE(adapter->priv[i]) ==
-@@ -147,6 +149,7 @@ mwifiex_sdio_remove(struct sdio_func *fu
- kfree(card);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- /*
- * SDIO suspend.
- *
-@@ -246,6 +249,7 @@ static int mwifiex_sdio_resume(struct de
-
- return 0;
- }
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
-
- /* Device ID for SD8786 */
- #define SDIO_DEVICE_ID_MARVELL_8786 (0x9116)
-@@ -264,10 +268,12 @@ static const struct sdio_device_id mwifi
-
- MODULE_DEVICE_TABLE(sdio, mwifiex_ids);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- static const struct dev_pm_ops mwifiex_sdio_pm_ops = {
- .suspend = mwifiex_sdio_suspend,
- .resume = mwifiex_sdio_resume,
- };
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
-
- static struct sdio_driver mwifiex_sdio = {
- .name = "mwifiex_sdio",
-@@ -276,7 +282,9 @@ static struct sdio_driver mwifiex_sdio =
- .remove = mwifiex_sdio_remove,
- .drv = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- .pm = &mwifiex_sdio_pm_ops,
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
- }
- };
-
---- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
-+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
-@@ -71,7 +71,7 @@ static bool
- brcmf_pm_resume_error(struct brcmf_sdio_dev *sdiodev)
- {
- bool is_err = false;
--#ifdef CONFIG_PM_SLEEP
-+#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- is_err = atomic_read(&sdiodev->suspend);
- #endif
- return is_err;
-@@ -80,7 +80,7 @@ brcmf_pm_resume_error(struct brcmf_sdio_
- static void
- brcmf_pm_resume_wait(struct brcmf_sdio_dev *sdiodev, wait_queue_head_t *wq)
- {
--#ifdef CONFIG_PM_SLEEP
-+#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- int retry = 0;
- while (atomic_read(&sdiodev->suspend) && retry++ != 30)
- wait_event_timeout(*wq, false, HZ/100);
-@@ -546,7 +546,7 @@ static void brcmf_ops_sdio_remove(struct
- brcmf_dbg(TRACE, "Exit\n");
- }
-
--#ifdef CONFIG_PM_SLEEP
-+#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- static int brcmf_sdio_suspend(struct device *dev)
- {
- mmc_pm_flag_t sdio_flags;
-@@ -596,7 +596,7 @@ static struct sdio_driver brcmf_sdmmc_dr
- .remove = brcmf_ops_sdio_remove,
- .name = "brcmfmac",
- .id_table = brcmf_sdmmc_ids,
--#ifdef CONFIG_PM_SLEEP
-+#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- .drv = {
- .pm = &brcmf_sdio_pm_ops,
- },
---- a/drivers/bluetooth/btmrvl_sdio.c
-+++ b/drivers/bluetooth/btmrvl_sdio.c
-@@ -1050,6 +1050,7 @@ static void btmrvl_sdio_remove(struct sd
- }
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- static int btmrvl_sdio_suspend(struct device *dev)
- {
- struct sdio_func *func = dev_to_sdio_func(dev);
-@@ -1145,6 +1146,7 @@ static const struct dev_pm_ops btmrvl_sd
- .suspend = btmrvl_sdio_suspend,
- .resume = btmrvl_sdio_resume,
- };
-+#endif
-
- static struct sdio_driver bt_mrvl_sdio = {
- .name = "btmrvl_sdio",
-@@ -1153,7 +1155,9 @@ static struct sdio_driver bt_mrvl_sdio =
- .remove = btmrvl_sdio_remove,
- .drv = {
- .owner = THIS_MODULE,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- .pm = &btmrvl_sdio_pm_ops,
-+#endif
- }
- };
-
diff --git a/patches/collateral-evolutions/network/29-sdio_no_suspend/INFO b/patches/collateral-evolutions/network/29-sdio_no_suspend/INFO
new file mode 100644
index 00000000..c5e2fe43
--- /dev/null
+++ b/patches/collateral-evolutions/network/29-sdio_no_suspend/INFO
@@ -0,0 +1,5 @@
+Starting with commit 66fceb69b72ff7e9cd8da2ca70033982d5376e0e
+"libertas: Added callback functions to support SDIO suspend/resume."
+libertas uses new functions from the in kernel sdio framework for
+suspend and resume that are not backported.
+
diff --git a/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_bluetooth_btmrvl_sdio.c b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_bluetooth_btmrvl_sdio.c
new file mode 100644
index 00000000..77f3dac0
--- /dev/null
+++ b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_bluetooth_btmrvl_sdio.c
@@ -0,0 +1,28 @@
+--- a/drivers/bluetooth/btmrvl_sdio.c
++++ b/drivers/bluetooth/btmrvl_sdio.c
+@@ -1050,6 +1050,7 @@
+ }
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ static int btmrvl_sdio_suspend(struct device *dev)
+ {
+ struct sdio_func *func = dev_to_sdio_func(dev);
+@@ -1145,6 +1146,7 @@
+ .suspend = btmrvl_sdio_suspend,
+ .resume = btmrvl_sdio_resume,
+ };
++#endif
+
+ static struct sdio_driver bt_mrvl_sdio = {
+ .name = "btmrvl_sdio",
+@@ -1153,7 +1155,9 @@
+ .remove = btmrvl_sdio_remove,
+ .drv = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ .pm = &btmrvl_sdio_pm_ops,
++#endif
+ }
+ };
+
diff --git a/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_ath_ath6kl_sdio.c b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_ath_ath6kl_sdio.c
new file mode 100644
index 00000000..c67f2309
--- /dev/null
+++ b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_ath_ath6kl_sdio.c
@@ -0,0 +1,47 @@
+--- a/drivers/net/wireless/ath/ath6kl/sdio.c
++++ b/drivers/net/wireless/ath/ath6kl/sdio.c
+@@ -817,6 +817,7 @@
+ return ret;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ static int ath6kl_set_sdio_pm_caps(struct ath6kl *ar)
+ {
+ struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
+@@ -950,6 +951,17 @@
+
+ return 0;
+ }
++#else
++static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow)
++{
++ return 0;
++}
++
++static int ath6kl_sdio_resume(struct ath6kl *ar)
++{
++ return 0;
++}
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
+
+ /* set the window address register (using 4-byte register access ). */
+ static int ath6kl_set_addrwin_reg(struct ath6kl *ar, u32 reg_addr, u32 addr)
+@@ -1263,7 +1275,7 @@
+ .stop = ath6kl_sdio_stop,
+ };
+
+-#ifdef CONFIG_PM_SLEEP
++#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+
+ /*
+ * Empty handlers so that mmc subsystem doesn't remove us entirely during
+@@ -1413,7 +1425,9 @@
+ .id_table = ath6kl_sdio_devices,
+ .probe = ath6kl_sdio_probe,
+ .remove = ath6kl_sdio_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ .drv.pm = ATH6KL_SDIO_PM_OPS,
++#endif
+ };
+
+ static int __init ath6kl_sdio_init(void)
diff --git a/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_brcm80211_brcmfmac_bcmsdh_sdmmc.c b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_brcm80211_brcmfmac_bcmsdh_sdmmc.c
new file mode 100644
index 00000000..d76c3c85
--- /dev/null
+++ b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_brcm80211_brcmfmac_bcmsdh_sdmmc.c
@@ -0,0 +1,38 @@
+--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
+@@ -71,7 +71,7 @@
+ brcmf_pm_resume_error(struct brcmf_sdio_dev *sdiodev)
+ {
+ bool is_err = false;
+-#ifdef CONFIG_PM_SLEEP
++#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ is_err = atomic_read(&sdiodev->suspend);
+ #endif
+ return is_err;
+@@ -80,7 +80,7 @@
+ static void
+ brcmf_pm_resume_wait(struct brcmf_sdio_dev *sdiodev, wait_queue_head_t *wq)
+ {
+-#ifdef CONFIG_PM_SLEEP
++#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ int retry = 0;
+ while (atomic_read(&sdiodev->suspend) && retry++ != 30)
+ wait_event_timeout(*wq, false, HZ/100);
+@@ -546,7 +546,7 @@
+ brcmf_dbg(TRACE, "Exit\n");
+ }
+
+-#ifdef CONFIG_PM_SLEEP
++#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ static int brcmf_sdio_suspend(struct device *dev)
+ {
+ mmc_pm_flag_t sdio_flags;
+@@ -596,7 +596,7 @@
+ .remove = brcmf_ops_sdio_remove,
+ .name = "brcmfmac",
+ .id_table = brcmf_sdmmc_ids,
+-#ifdef CONFIG_PM_SLEEP
++#if defined(CONFIG_PM_SLEEP) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ .drv = {
+ .pm = &brcmf_sdio_pm_ops,
+ },
diff --git a/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_libertas_if_sdio.c b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_libertas_if_sdio.c
new file mode 100644
index 00000000..3ee28d7c
--- /dev/null
+++ b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_libertas_if_sdio.c
@@ -0,0 +1,29 @@
+--- a/drivers/net/wireless/libertas/if_sdio.c
++++ b/drivers/net/wireless/libertas/if_sdio.c
+@@ -1345,6 +1345,7 @@
+ lbs_deb_leave(LBS_DEB_SDIO);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ static int if_sdio_suspend(struct device *dev)
+ {
+ struct sdio_func *func = dev_to_sdio_func(dev);
+@@ -1403,15 +1404,18 @@
+ .suspend = if_sdio_suspend,
+ .resume = if_sdio_resume,
+ };
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
+
+ static struct sdio_driver if_sdio_driver = {
+ .name = "libertas_sdio",
+ .id_table = if_sdio_ids,
+ .probe = if_sdio_probe,
+ .remove = if_sdio_remove,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ .drv = {
+ .pm = &if_sdio_pm_ops,
+ },
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
+ };
+
+ /*******************************************************************/
diff --git a/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_mwifiex_sdio.c b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_mwifiex_sdio.c
new file mode 100644
index 00000000..14297c48
--- /dev/null
+++ b/patches/collateral-evolutions/network/29-sdio_no_suspend/drivers_net_wireless_mwifiex_sdio.c
@@ -0,0 +1,52 @@
+--- a/drivers/net/wireless/mwifiex/sdio.c
++++ b/drivers/net/wireless/mwifiex/sdio.c
+@@ -129,8 +129,10 @@
+ wait_for_completion(&adapter->fw_load);
+
+ if (user_rmmod) {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ if (adapter->is_suspended)
+ mwifiex_sdio_resume(adapter->dev);
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
+
+ for (i = 0; i < adapter->priv_num; i++)
+ if ((GET_BSS_ROLE(adapter->priv[i]) ==
+@@ -147,6 +149,7 @@
+ kfree(card);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ /*
+ * SDIO suspend.
+ *
+@@ -246,6 +249,7 @@
+
+ return 0;
+ }
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
+
+ /* Device ID for SD8786 */
+ #define SDIO_DEVICE_ID_MARVELL_8786 (0x9116)
+@@ -264,10 +268,12 @@
+
+ MODULE_DEVICE_TABLE(sdio, mwifiex_ids);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ static const struct dev_pm_ops mwifiex_sdio_pm_ops = {
+ .suspend = mwifiex_sdio_suspend,
+ .resume = mwifiex_sdio_resume,
+ };
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
+
+ static struct sdio_driver mwifiex_sdio = {
+ .name = "mwifiex_sdio",
+@@ -276,7 +282,9 @@
+ .remove = mwifiex_sdio_remove,
+ .drv = {
+ .owner = THIS_MODULE,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
+ .pm = &mwifiex_sdio_pm_ops,
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) */
+ }
+ };
+
diff --git a/patches/collateral-evolutions/network/30-bridge-port.patch b/patches/collateral-evolutions/network/30-bridge-port/INFO
index f7b4ea75..2d9d24cc 100644
--- a/patches/collateral-evolutions/network/30-bridge-port.patch
+++ b/patches/collateral-evolutions/network/30-bridge-port/INFO
@@ -21,25 +21,3 @@ to drivers and not just private bridge code. If that patch doesn't
get accepted upstream we'l have to carry this patch around for
compat-drivers.
---- a/net/wireless/util.c
-+++ b/net/wireless/util.c
-@@ -816,7 +816,7 @@ int cfg80211_change_iface(struct cfg8021
- return -EOPNOTSUPP;
-
- /* if it's part of a bridge, reject changing type to station/ibss */
-- if ((dev->priv_flags & IFF_BRIDGE_PORT) &&
-+ if (br_port_exists(dev) &&
- (ntype == NL80211_IFTYPE_ADHOC ||
- ntype == NL80211_IFTYPE_STATION ||
- ntype == NL80211_IFTYPE_P2P_CLIENT))
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -2298,7 +2298,7 @@ static int nl80211_valid_4addr(struct cf
- enum nl80211_iftype iftype)
- {
- if (!use_4addr) {
-- if (netdev && (netdev->priv_flags & IFF_BRIDGE_PORT))
-+ if (netdev && br_port_exists(netdev))
- return -EBUSY;
- return 0;
- }
diff --git a/patches/collateral-evolutions/network/30-bridge-port/net_wireless_nl80211.c b/patches/collateral-evolutions/network/30-bridge-port/net_wireless_nl80211.c
new file mode 100644
index 00000000..35b26338
--- /dev/null
+++ b/patches/collateral-evolutions/network/30-bridge-port/net_wireless_nl80211.c
@@ -0,0 +1,11 @@
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -2298,7 +2298,7 @@
+ enum nl80211_iftype iftype)
+ {
+ if (!use_4addr) {
+- if (netdev && (netdev->priv_flags & IFF_BRIDGE_PORT))
++ if (netdev && br_port_exists(netdev))
+ return -EBUSY;
+ return 0;
+ }
diff --git a/patches/collateral-evolutions/network/30-bridge-port/net_wireless_util.c b/patches/collateral-evolutions/network/30-bridge-port/net_wireless_util.c
new file mode 100644
index 00000000..cbbf16fb
--- /dev/null
+++ b/patches/collateral-evolutions/network/30-bridge-port/net_wireless_util.c
@@ -0,0 +1,11 @@
+--- a/net/wireless/util.c
++++ b/net/wireless/util.c
+@@ -816,7 +816,7 @@
+ return -EOPNOTSUPP;
+
+ /* if it's part of a bridge, reject changing type to station/ibss */
+- if ((dev->priv_flags & IFF_BRIDGE_PORT) &&
++ if (br_port_exists(dev) &&
+ (ntype == NL80211_IFTYPE_ADHOC ||
+ ntype == NL80211_IFTYPE_STATION ||
+ ntype == NL80211_IFTYPE_P2P_CLIENT))
diff --git a/patches/collateral-evolutions/network/32-remove-ns-type.patch b/patches/collateral-evolutions/network/32-remove-ns-type/net_wireless_sysfs.c
index 9f25775b..0a2ac04d 100644
--- a/patches/collateral-evolutions/network/32-remove-ns-type.patch
+++ b/patches/collateral-evolutions/network/32-remove-ns-type/net_wireless_sysfs.c
@@ -1,6 +1,6 @@
--- a/net/wireless/sysfs.c
+++ b/net/wireless/sysfs.c
-@@ -133,12 +133,14 @@ static int wiphy_resume(struct device *d
+@@ -133,12 +133,14 @@
return ret;
}
@@ -15,7 +15,7 @@
struct class ieee80211_class = {
.name = "ieee80211",
-@@ -148,8 +150,10 @@ struct class ieee80211_class = {
+@@ -148,8 +150,10 @@
.dev_uevent = wiphy_uevent,
.suspend = wiphy_suspend,
.resume = wiphy_resume,
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes.patch b/patches/collateral-evolutions/network/35-fix-makefile-includes.patch
deleted file mode 100644
index d0e0089c..00000000
--- a/patches/collateral-evolutions/network/35-fix-makefile-includes.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-When some other headers are included in some makefile it must be
-relative to the current object file processed. When giving the full
-path the make process will search in the kernel tree for the headers.
-
---- a/drivers/net/wireless/rtl818x/rtl8180/Makefile
-+++ b/drivers/net/wireless/rtl818x/rtl8180/Makefile
-@@ -2,4 +2,4 @@ rtl8180-objs := dev.o rtl8225.o sa2400.
-
- obj-$(CONFIG_RTL8180) += rtl8180.o
-
--ccflags-y += -Idrivers/net/wireless/rtl818x
-+ccflags-y += -I$(obj)/..
---- a/drivers/net/wireless/rtl818x/rtl8187/Makefile
-+++ b/drivers/net/wireless/rtl818x/rtl8187/Makefile
-@@ -2,4 +2,4 @@ rtl8187-objs := dev.o rtl8225.o leds.o
-
- obj-$(CONFIG_RTL8187) += rtl8187.o
-
--ccflags-y += -Idrivers/net/wireless/rtl818x
-+ccflags-y += -I$(obj)/..
---- a/drivers/net/wireless/brcm80211/brcmfmac/Makefile
-+++ b/drivers/net/wireless/brcm80211/brcmfmac/Makefile
-@@ -16,8 +16,8 @@
- # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ccflags-y += \
-- -Idrivers/net/wireless/brcm80211/brcmfmac \
-- -Idrivers/net/wireless/brcm80211/include
-+ -I$(obj) \
-+ -I$(obj)/../include
-
- ccflags-y += -D__CHECK_ENDIAN__
-
---- a/drivers/net/wireless/brcm80211/brcmsmac/Makefile
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/Makefile
-@@ -17,9 +17,9 @@
-
- ccflags-y := \
- -D__CHECK_ENDIAN__ \
-- -Idrivers/net/wireless/brcm80211/brcmsmac \
-- -Idrivers/net/wireless/brcm80211/brcmsmac/phy \
-- -Idrivers/net/wireless/brcm80211/include
-+ -I$(obj) \
-+ -I$(obj)/phy \
-+ -I$(obj)/../include
-
- BRCMSMAC_OFILES := \
- mac80211_if.o \
---- a/drivers/net/wireless/brcm80211/brcmutil/Makefile
-+++ b/drivers/net/wireless/brcm80211/brcmutil/Makefile
-@@ -16,8 +16,8 @@
- # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ccflags-y := \
-- -Idrivers/net/wireless/brcm80211/brcmutil \
-- -Idrivers/net/wireless/brcm80211/include
-+ -I$(obj) \
-+ -I$(obj)/../include
-
- BRCMUTIL_OFILES := \
- utils.o
---- a/net/wireless/Makefile
-+++ b/net/wireless/Makefile
-@@ -20,6 +20,6 @@ CFLAGS_trace.o := -I$(src)
- ccflags-y += -D__CHECK_ENDIAN__
-
- $(obj)/regdb.c: $(src)/db.txt $(src)/genregdb.awk
-- @$(AWK) -f $(srctree)/$(src)/genregdb.awk < $< > $@
-+ @$(AWK) -f $(src)/genregdb.awk < $< > $@
-
- clean-files := regdb.c
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes/INFO b/patches/collateral-evolutions/network/35-fix-makefile-includes/INFO
new file mode 100644
index 00000000..09d901a4
--- /dev/null
+++ b/patches/collateral-evolutions/network/35-fix-makefile-includes/INFO
@@ -0,0 +1,4 @@
+When some other headers are included in some makefile it must be
+relative to the current object file processed. When giving the full
+path the make process will search in the kernel tree for the headers.
+
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmfmac_Makefile b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmfmac_Makefile
new file mode 100644
index 00000000..aa914462
--- /dev/null
+++ b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmfmac_Makefile
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/brcm80211/brcmfmac/Makefile
++++ b/drivers/net/wireless/brcm80211/brcmfmac/Makefile
+@@ -16,8 +16,8 @@
+ # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ccflags-y += \
+- -Idrivers/net/wireless/brcm80211/brcmfmac \
+- -Idrivers/net/wireless/brcm80211/include
++ -I$(obj) \
++ -I$(obj)/../include
+
+ ccflags-y += -D__CHECK_ENDIAN__
+
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmsmac_Makefile b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmsmac_Makefile
new file mode 100644
index 00000000..973adaf6
--- /dev/null
+++ b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmsmac_Makefile
@@ -0,0 +1,15 @@
+--- a/drivers/net/wireless/brcm80211/brcmsmac/Makefile
++++ b/drivers/net/wireless/brcm80211/brcmsmac/Makefile
+@@ -17,9 +17,9 @@
+
+ ccflags-y := \
+ -D__CHECK_ENDIAN__ \
+- -Idrivers/net/wireless/brcm80211/brcmsmac \
+- -Idrivers/net/wireless/brcm80211/brcmsmac/phy \
+- -Idrivers/net/wireless/brcm80211/include
++ -I$(obj) \
++ -I$(obj)/phy \
++ -I$(obj)/../include
+
+ BRCMSMAC_OFILES := \
+ mac80211_if.o \
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmutil_Makefile b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmutil_Makefile
new file mode 100644
index 00000000..13545013
--- /dev/null
+++ b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_brcm80211_brcmutil_Makefile
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/brcm80211/brcmutil/Makefile
++++ b/drivers/net/wireless/brcm80211/brcmutil/Makefile
+@@ -16,8 +16,8 @@
+ # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ccflags-y := \
+- -Idrivers/net/wireless/brcm80211/brcmutil \
+- -Idrivers/net/wireless/brcm80211/include
++ -I$(obj) \
++ -I$(obj)/../include
+
+ BRCMUTIL_OFILES := \
+ utils.o
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8180_Makefile b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8180_Makefile
new file mode 100644
index 00000000..8160ae02
--- /dev/null
+++ b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8180_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/net/wireless/rtl818x/rtl8180/Makefile
++++ b/drivers/net/wireless/rtl818x/rtl8180/Makefile
+@@ -2,4 +2,4 @@
+
+ obj-$(CONFIG_RTL8180) += rtl8180.o
+
+-ccflags-y += -Idrivers/net/wireless/rtl818x
++ccflags-y += -I$(obj)/..
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8187_Makefile b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8187_Makefile
new file mode 100644
index 00000000..7ba4696f
--- /dev/null
+++ b/patches/collateral-evolutions/network/35-fix-makefile-includes/drivers_net_wireless_rtl818x_rtl8187_Makefile
@@ -0,0 +1,8 @@
+--- a/drivers/net/wireless/rtl818x/rtl8187/Makefile
++++ b/drivers/net/wireless/rtl818x/rtl8187/Makefile
+@@ -2,4 +2,4 @@
+
+ obj-$(CONFIG_RTL8187) += rtl8187.o
+
+-ccflags-y += -Idrivers/net/wireless/rtl818x
++ccflags-y += -I$(obj)/..
diff --git a/patches/collateral-evolutions/network/35-fix-makefile-includes/net_wireless_Makefile b/patches/collateral-evolutions/network/35-fix-makefile-includes/net_wireless_Makefile
new file mode 100644
index 00000000..cb9f890b
--- /dev/null
+++ b/patches/collateral-evolutions/network/35-fix-makefile-includes/net_wireless_Makefile
@@ -0,0 +1,10 @@
+--- a/net/wireless/Makefile
++++ b/net/wireless/Makefile
+@@ -20,6 +20,6 @@
+ ccflags-y += -D__CHECK_ENDIAN__
+
+ $(obj)/regdb.c: $(src)/db.txt $(src)/genregdb.awk
+- @$(AWK) -f $(srctree)/$(src)/genregdb.awk < $< > $@
++ @$(AWK) -f $(src)/genregdb.awk < $< > $@
+
+ clean-files := regdb.c
diff --git a/patches/collateral-evolutions/network/36-workqueue/INFO b/patches/collateral-evolutions/network/36-workqueue/INFO
new file mode 100644
index 00000000..a09aaa27
--- /dev/null
+++ b/patches/collateral-evolutions/network/36-workqueue/INFO
@@ -0,0 +1,3 @@
+Backport commit 99b88a0ecbdbc6df03527292571b2b442965814a
+The rest is backported in include/linux/compat-2.6.37.h
+
diff --git a/patches/collateral-evolutions/network/36-workqueue.patch b/patches/collateral-evolutions/network/36-workqueue/net_mac80211_main.c
index c2c6bbd6..dbcbd443 100644
--- a/patches/collateral-evolutions/network/36-workqueue.patch
+++ b/patches/collateral-evolutions/network/36-workqueue/net_mac80211_main.c
@@ -1,9 +1,6 @@
-Backport commit 99b88a0ecbdbc6df03527292571b2b442965814a
-The rest is backported in include/linux/compat-2.6.37.h
-
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -1152,6 +1152,10 @@ static void __exit ieee80211_exit(void)
+@@ -1152,6 +1152,10 @@
rc80211_minstrel_ht_exit();
rc80211_minstrel_exit();
diff --git a/patches/collateral-evolutions/network/37-vsnprintk.patch b/patches/collateral-evolutions/network/37-vsnprintk/drivers_net_wireless_ath_main.c
index 2a3d3044..b09ca7ae 100644
--- a/patches/collateral-evolutions/network/37-vsnprintk.patch
+++ b/patches/collateral-evolutions/network/37-vsnprintk/drivers_net_wireless_ath_main.c
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/main.c
+++ b/drivers/net/wireless/ath/main.c
-@@ -59,6 +59,7 @@ struct sk_buff *ath_rxbuf_alloc(struct a
+@@ -59,6 +59,7 @@
}
EXPORT_SYMBOL(ath_rxbuf_alloc);
@@ -8,7 +8,7 @@
void ath_printk(const char *level, const struct ath_common* common,
const char *fmt, ...)
{
-@@ -78,4 +79,24 @@ void ath_printk(const char *level, const
+@@ -78,4 +79,24 @@
va_end(args);
}
diff --git a/patches/collateral-evolutions/network/38-led-max-brightness.patch b/patches/collateral-evolutions/network/38-led-max-brightness.patch
deleted file mode 100644
index 1495815c..00000000
--- a/patches/collateral-evolutions/network/38-led-max-brightness.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- a/drivers/net/wireless/iwlegacy/common.c
-+++ b/drivers/net/wireless/iwlegacy/common.c
-@@ -562,7 +562,9 @@ il_leds_init(struct il_priv *il)
- kasprintf(GFP_KERNEL, "%s-led", wiphy_name(il->hw->wiphy));
- il->led.brightness_set = il_led_brightness_set;
- il->led.blink_set = il_led_blink_set;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
- il->led.max_brightness = 1;
-+#endif
-
- switch (mode) {
- case IL_LED_DEFAULT:
---- a/drivers/net/wireless/iwlwifi/dvm/led.c
-+++ b/drivers/net/wireless/iwlwifi/dvm/led.c
-@@ -187,7 +187,9 @@ void iwl_leds_init(struct iwl_priv *priv
- wiphy_name(priv->hw->wiphy));
- priv->led.brightness_set = iwl_led_brightness_set;
- priv->led.blink_set = iwl_led_blink_set;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
- priv->led.max_brightness = 1;
-+#endif
-
- switch (mode) {
- case IWL_LED_DEFAULT:
---- a/drivers/net/wireless/iwlwifi/mvm/led.c
-+++ b/drivers/net/wireless/iwlwifi/mvm/led.c
-@@ -108,7 +108,9 @@ int iwl_mvm_leds_init(struct iwl_mvm *mv
- mvm->led.name = kasprintf(GFP_KERNEL, "%s-led",
- wiphy_name(mvm->hw->wiphy));
- mvm->led.brightness_set = iwl_led_brightness_set;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
- mvm->led.max_brightness = 1;
-+#endif
-
- if (mode == IWL_LED_RF_STATE)
- mvm->led.default_trigger =
diff --git a/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlegacy_common.c b/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlegacy_common.c
new file mode 100644
index 00000000..dec9bab8
--- /dev/null
+++ b/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlegacy_common.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/iwlegacy/common.c
++++ b/drivers/net/wireless/iwlegacy/common.c
+@@ -562,7 +562,9 @@
+ kasprintf(GFP_KERNEL, "%s-led", wiphy_name(il->hw->wiphy));
+ il->led.brightness_set = il_led_brightness_set;
+ il->led.blink_set = il_led_blink_set;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
+ il->led.max_brightness = 1;
++#endif
+
+ switch (mode) {
+ case IL_LED_DEFAULT:
diff --git a/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_dvm_led.c b/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_dvm_led.c
new file mode 100644
index 00000000..fdc7708d
--- /dev/null
+++ b/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_dvm_led.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/iwlwifi/dvm/led.c
++++ b/drivers/net/wireless/iwlwifi/dvm/led.c
+@@ -187,7 +187,9 @@
+ wiphy_name(priv->hw->wiphy));
+ priv->led.brightness_set = iwl_led_brightness_set;
+ priv->led.blink_set = iwl_led_blink_set;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
+ priv->led.max_brightness = 1;
++#endif
+
+ switch (mode) {
+ case IWL_LED_DEFAULT:
diff --git a/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_mvm_led.c b/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_mvm_led.c
new file mode 100644
index 00000000..e4093b57
--- /dev/null
+++ b/patches/collateral-evolutions/network/38-led-max-brightness/drivers_net_wireless_iwlwifi_mvm_led.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/iwlwifi/mvm/led.c
++++ b/drivers/net/wireless/iwlwifi/mvm/led.c
+@@ -108,7 +108,9 @@
+ mvm->led.name = kasprintf(GFP_KERNEL, "%s-led",
+ wiphy_name(mvm->hw->wiphy));
+ mvm->led.brightness_set = iwl_led_brightness_set;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
+ mvm->led.max_brightness = 1;
++#endif
+
+ if (mode == IWL_LED_RF_STATE)
+ mvm->led.default_trigger =
diff --git a/patches/collateral-evolutions/network/39-remove_blink_set.patch b/patches/collateral-evolutions/network/39-remove_blink_set.patch
deleted file mode 100644
index dc9af73f..00000000
--- a/patches/collateral-evolutions/network/39-remove_blink_set.patch
+++ /dev/null
@@ -1,56 +0,0 @@
---- a/drivers/net/wireless/iwlegacy/common.c
-+++ b/drivers/net/wireless/iwlegacy/common.c
-@@ -540,6 +540,7 @@ il_led_brightness_set(struct led_classde
- il_led_cmd(il, on, 0);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
- static int
- il_led_blink_set(struct led_classdev *led_cdev, unsigned long *delay_on,
- unsigned long *delay_off)
-@@ -548,6 +549,7 @@ il_led_blink_set(struct led_classdev *le
-
- return il_led_cmd(il, *delay_on, *delay_off);
- }
-+#endif
-
- void
- il_leds_init(struct il_priv *il)
-@@ -561,7 +563,9 @@ il_leds_init(struct il_priv *il)
- il->led.name =
- kasprintf(GFP_KERNEL, "%s-led", wiphy_name(il->hw->wiphy));
- il->led.brightness_set = il_led_brightness_set;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
- il->led.blink_set = il_led_blink_set;
-+#endif
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
- il->led.max_brightness = 1;
- #endif
---- a/drivers/net/wireless/iwlwifi/dvm/led.c
-+++ b/drivers/net/wireless/iwlwifi/dvm/led.c
-@@ -162,6 +162,7 @@ static void iwl_led_brightness_set(struc
- iwl_led_cmd(priv, on, 0);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
- static int iwl_led_blink_set(struct led_classdev *led_cdev,
- unsigned long *delay_on,
- unsigned long *delay_off)
-@@ -170,6 +171,7 @@ static int iwl_led_blink_set(struct led_
-
- return iwl_led_cmd(priv, *delay_on, *delay_off);
- }
-+#endif
-
- void iwl_leds_init(struct iwl_priv *priv)
- {
-@@ -186,7 +188,9 @@ void iwl_leds_init(struct iwl_priv *priv
- priv->led.name = kasprintf(GFP_KERNEL, "%s-led",
- wiphy_name(priv->hw->wiphy));
- priv->led.brightness_set = iwl_led_brightness_set;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
- priv->led.blink_set = iwl_led_blink_set;
-+#endif
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
- priv->led.max_brightness = 1;
- #endif
diff --git a/patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlegacy_common.c b/patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlegacy_common.c
new file mode 100644
index 00000000..0704ecba
--- /dev/null
+++ b/patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlegacy_common.c
@@ -0,0 +1,28 @@
+--- a/drivers/net/wireless/iwlegacy/common.c
++++ b/drivers/net/wireless/iwlegacy/common.c
+@@ -540,6 +540,7 @@
+ il_led_cmd(il, on, 0);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
+ static int
+ il_led_blink_set(struct led_classdev *led_cdev, unsigned long *delay_on,
+ unsigned long *delay_off)
+@@ -548,6 +549,7 @@
+
+ return il_led_cmd(il, *delay_on, *delay_off);
+ }
++#endif
+
+ void
+ il_leds_init(struct il_priv *il)
+@@ -561,7 +563,9 @@
+ il->led.name =
+ kasprintf(GFP_KERNEL, "%s-led", wiphy_name(il->hw->wiphy));
+ il->led.brightness_set = il_led_brightness_set;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
+ il->led.blink_set = il_led_blink_set;
++#endif
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
+ il->led.max_brightness = 1;
+ #endif
diff --git a/patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlwifi_dvm_led.c b/patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlwifi_dvm_led.c
new file mode 100644
index 00000000..b73774aa
--- /dev/null
+++ b/patches/collateral-evolutions/network/39-remove_blink_set/drivers_net_wireless_iwlwifi_dvm_led.c
@@ -0,0 +1,28 @@
+--- a/drivers/net/wireless/iwlwifi/dvm/led.c
++++ b/drivers/net/wireless/iwlwifi/dvm/led.c
+@@ -162,6 +162,7 @@
+ iwl_led_cmd(priv, on, 0);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
+ static int iwl_led_blink_set(struct led_classdev *led_cdev,
+ unsigned long *delay_on,
+ unsigned long *delay_off)
+@@ -170,6 +171,7 @@
+
+ return iwl_led_cmd(priv, *delay_on, *delay_off);
+ }
++#endif
+
+ void iwl_leds_init(struct iwl_priv *priv)
+ {
+@@ -186,7 +188,9 @@
+ priv->led.name = kasprintf(GFP_KERNEL, "%s-led",
+ wiphy_name(priv->hw->wiphy));
+ priv->led.brightness_set = iwl_led_brightness_set;
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
+ priv->led.blink_set = iwl_led_blink_set;
++#endif
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)
+ priv->led.max_brightness = 1;
+ #endif
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features.patch b/patches/collateral-evolutions/network/40-netdev-hw-features.patch
deleted file mode 100644
index b96b5994..00000000
--- a/patches/collateral-evolutions/network/40-netdev-hw-features.patch
+++ /dev/null
@@ -1,372 +0,0 @@
-This reverts the commits that deal with hw_features and
-set_features, fix_features for kernels < 2.6.39.
-
-Below is one example commit being reverted, but we also do
-this for ath6kl and any driver that uses this in this file.
-
-commit 782d640afd15af7a1faf01cfe566ca4ac511319d
-Author: Michał Mirosław <mirq-linux@rere.qmqm.pl>
-Date: Thu Apr 7 07:32:18 2011 +0000
-
- net: atl*: convert to hw_features
-
- Things left as they were:
- - atl1: is RX checksum really enabled?
- - atl2: copy-paste from atl1, with-errors-on-modify I presume
- - atl1c: there's a bug: MTU can't be changed if device is not up
-
- Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
- Signed-off-by: David S. Miller <davem@davemloft.net>
-
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c
-@@ -114,6 +114,13 @@ static int atl1c_set_settings(struct net
- return 0;
- }
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+static u32 atl1c_get_tx_csum(struct net_device *netdev)
-+{
-+ return (netdev->features & NETIF_F_HW_CSUM) != 0;
-+}
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
-+
- static u32 atl1c_get_msglevel(struct net_device *netdev)
- {
- struct atl1c_adapter *adapter = netdev_priv(netdev);
-@@ -301,6 +308,11 @@ static const struct ethtool_ops atl1c_et
- .get_link = ethtool_op_get_link,
- .get_eeprom_len = atl1c_get_eeprom_len,
- .get_eeprom = atl1c_get_eeprom,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+ .get_tx_csum = atl1c_get_tx_csum,
-+ .get_sg = ethtool_op_get_sg,
-+ .set_sg = ethtool_op_set_sg,
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
- };
-
- void atl1c_set_ethtool_ops(struct net_device *netdev)
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -491,6 +491,7 @@ static void atl1c_set_rxbufsize(struct a
- roundup(mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN, 8) : AT_RX_BUF_SIZE;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- static netdev_features_t atl1c_fix_features(struct net_device *netdev,
- netdev_features_t features)
- {
-@@ -519,6 +520,7 @@ static int atl1c_set_features(struct net
-
- return 0;
- }
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
-
- /**
- * atl1c_change_mtu - Change the Maximum Transfer Unit
-@@ -551,8 +553,19 @@ static int atl1c_change_mtu(struct net_d
- netdev->mtu = new_mtu;
- adapter->hw.max_frame_size = new_mtu;
- atl1c_set_rxbufsize(adapter, netdev);
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+ if (new_mtu > MAX_TSO_FRAME_SIZE) {
-+ adapter->netdev->features &= ~NETIF_F_TSO;
-+ adapter->netdev->features &= ~NETIF_F_TSO6;
-+ } else {
-+ adapter->netdev->features |= NETIF_F_TSO;
-+ adapter->netdev->features |= NETIF_F_TSO6;
-+ }
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
- atl1c_down(adapter);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- netdev_update_features(netdev);
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
- atl1c_up(adapter);
- clear_bit(__AT_RESETTING, &adapter->flags);
- }
-@@ -2459,8 +2472,10 @@ static const struct net_device_ops atl1c
- .ndo_set_mac_address = atl1c_set_mac_addr,
- .ndo_set_rx_mode = atl1c_set_multi,
- .ndo_change_mtu = atl1c_change_mtu,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- .ndo_fix_features = atl1c_fix_features,
- .ndo_set_features = atl1c_set_features,
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
- .ndo_do_ioctl = atl1c_ioctl,
- .ndo_tx_timeout = atl1c_tx_timeout,
- .ndo_get_stats = atl1c_get_stats,
-@@ -2479,6 +2494,7 @@ static int atl1c_init_netdev(struct net_
- atl1c_set_ethtool_ops(netdev);
-
- /* TODO: add when ready */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- netdev->hw_features = NETIF_F_SG |
- NETIF_F_HW_CSUM |
- NETIF_F_HW_VLAN_RX |
-@@ -2486,6 +2502,14 @@ static int atl1c_init_netdev(struct net_
- NETIF_F_TSO6;
- netdev->features = netdev->hw_features |
- NETIF_F_HW_VLAN_TX;
-+#else
-+ netdev->features = NETIF_F_SG |
-+ NETIF_F_HW_CSUM |
-+ NETIF_F_HW_VLAN_TX |
-+ NETIF_F_HW_VLAN_RX |
-+ NETIF_F_TSO |
-+ NETIF_F_TSO6;
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
- return 0;
- }
-
---- a/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c
-+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c
-@@ -384,6 +384,11 @@ static const struct ethtool_ops atl1e_et
- .get_eeprom_len = atl1e_get_eeprom_len,
- .get_eeprom = atl1e_get_eeprom,
- .set_eeprom = atl1e_set_eeprom,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+ .set_tx_csum = ethtool_op_set_tx_hw_csum,
-+ .set_sg = ethtool_op_set_sg,
-+ .set_tso = ethtool_op_set_tso,
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
- };
-
- void atl1e_set_ethtool_ops(struct net_device *netdev)
---- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-@@ -375,6 +375,7 @@ static int atl1e_set_mac_addr(struct net
- return 0;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- static netdev_features_t atl1e_fix_features(struct net_device *netdev,
- netdev_features_t features)
- {
-@@ -400,6 +401,7 @@ static int atl1e_set_features(struct net
-
- return 0;
- }
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
-
- /**
- * atl1e_change_mtu - Change the Maximum Transfer Unit
-@@ -1925,7 +1927,11 @@ void atl1e_down(struct atl1e_adapter *ad
- * reschedule our watchdog timer */
- set_bit(__AT_DOWN, &adapter->flags);
-
-+#if defined(NETIF_F_LLTX) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- netif_stop_queue(netdev);
-+#else
-+ netif_tx_disable(netdev);
-+#endif
-
- /* reset MAC to disable all RX/TX */
- atl1e_reset_hw(&adapter->hw);
-@@ -2195,8 +2201,10 @@ static const struct net_device_ops atl1e
- .ndo_set_rx_mode = atl1e_set_multi,
- .ndo_validate_addr = eth_validate_addr,
- .ndo_set_mac_address = atl1e_set_mac_addr,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- .ndo_fix_features = atl1e_fix_features,
- .ndo_set_features = atl1e_set_features,
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
- .ndo_change_mtu = atl1e_change_mtu,
- .ndo_do_ioctl = atl1e_ioctl,
- .ndo_tx_timeout = atl1e_tx_timeout,
-@@ -2216,10 +2224,15 @@ static int atl1e_init_netdev(struct net_
- netdev->watchdog_timeo = AT_TX_WATCHDOG;
- atl1e_set_ethtool_ops(netdev);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- netdev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO |
- NETIF_F_HW_VLAN_RX;
- netdev->features = netdev->hw_features | NETIF_F_LLTX |
- NETIF_F_HW_VLAN_TX;
-+#else
-+ netdev->features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO |
-+ NETIF_F_HW_VLAN_RX | NETIF_F_LLTX | NETIF_F_HW_VLAN_TX;
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
-
- return 0;
- }
---- a/drivers/net/ethernet/atheros/atlx/atl1.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
-@@ -2917,8 +2917,10 @@ static const struct net_device_ops atl1_
- .ndo_validate_addr = eth_validate_addr,
- .ndo_set_mac_address = atl1_set_mac,
- .ndo_change_mtu = atl1_change_mtu,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- .ndo_fix_features = atlx_fix_features,
- .ndo_set_features = atlx_set_features,
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
- .ndo_do_ioctl = atlx_ioctl,
- .ndo_tx_timeout = atlx_tx_timeout,
- #ifdef CONFIG_NET_POLL_CONTROLLER
-@@ -3028,11 +3030,13 @@ static int atl1_probe(struct pci_dev *pd
- netdev->features |= NETIF_F_SG;
- netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- netdev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_TSO |
- NETIF_F_HW_VLAN_RX;
-
- /* is this valid? see atl1_setup_mac_ctrl() */
- netdev->features |= NETIF_F_RXCSUM;
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
-
- /*
- * patch for some L1 of old version,
-@@ -3645,6 +3649,14 @@ static int atl1_set_pauseparam(struct ne
- return 0;
- }
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+/* FIXME: is this right? -- CHS */
-+static u32 atl1_get_rx_csum(struct net_device *netdev)
-+{
-+ return 1;
-+}
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
-+
- static void atl1_get_strings(struct net_device *netdev, u32 stringset,
- u8 *data)
- {
-@@ -3717,4 +3729,10 @@ static const struct ethtool_ops atl1_eth
- .nway_reset = atl1_nway_reset,
- .get_ethtool_stats = atl1_get_ethtool_stats,
- .get_sset_count = atl1_get_sset_count,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+ .get_rx_csum = atl1_get_rx_csum,
-+ .set_tx_csum = ethtool_op_set_tx_hw_csum,
-+ .set_sg = ethtool_op_set_sg,
-+ .set_tso = ethtool_op_set_tso,
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
- };
---- a/drivers/net/ethernet/atheros/atlx/atl2.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
-@@ -396,6 +396,7 @@ static void atl2_restore_vlan(struct atl
- atl2_vlan_mode(adapter->netdev, adapter->netdev->features);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- static netdev_features_t atl2_fix_features(struct net_device *netdev,
- netdev_features_t features)
- {
-@@ -421,6 +422,7 @@ static int atl2_set_features(struct net_
-
- return 0;
- }
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
-
- static void atl2_intr_rx(struct atl2_adapter *adapter)
- {
-@@ -1319,8 +1321,10 @@ static const struct net_device_ops atl2_
- .ndo_validate_addr = eth_validate_addr,
- .ndo_set_mac_address = atl2_set_mac,
- .ndo_change_mtu = atl2_change_mtu,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- .ndo_fix_features = atl2_fix_features,
- .ndo_set_features = atl2_set_features,
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
- .ndo_do_ioctl = atl2_ioctl,
- .ndo_tx_timeout = atl2_tx_timeout,
- #ifdef CONFIG_NET_POLL_CONTROLLER
-@@ -1417,8 +1421,12 @@ static int atl2_probe(struct pci_dev *pd
-
- err = -EIO;
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- netdev->hw_features = NETIF_F_SG | NETIF_F_HW_VLAN_RX;
-+#endif
-+#if defined(NETIF_F_HW_VLAN_TX) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
-+#endif
-
- /* Init PHY as early as possible due to power saving issue */
- atl2_phy_init(&adapter->hw);
-@@ -1838,6 +1846,13 @@ static int atl2_set_settings(struct net_
- return 0;
- }
-
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+static u32 atl2_get_tx_csum(struct net_device *netdev)
-+{
-+ return (netdev->features & NETIF_F_HW_CSUM) != 0;
-+}
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
-+
- static u32 atl2_get_msglevel(struct net_device *netdev)
- {
- return 0;
-@@ -2107,6 +2122,14 @@ static const struct ethtool_ops atl2_eth
- .get_eeprom_len = atl2_get_eeprom_len,
- .get_eeprom = atl2_get_eeprom,
- .set_eeprom = atl2_set_eeprom,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
-+ .get_tx_csum = atl2_get_tx_csum,
-+ .get_sg = ethtool_op_get_sg,
-+ .set_sg = ethtool_op_set_sg,
-+#ifdef NETIF_F_TSO
-+ .get_tso = ethtool_op_get_tso,
-+#endif
-+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
- };
-
- static void atl2_set_ethtool_ops(struct net_device *netdev)
---- a/drivers/net/ethernet/atheros/atlx/atlx.c
-+++ b/drivers/net/ethernet/atheros/atlx/atlx.c
-@@ -254,6 +254,7 @@ static void atlx_restore_vlan(struct atl
- atlx_vlan_mode(adapter->netdev, adapter->netdev->features);
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- static netdev_features_t atlx_fix_features(struct net_device *netdev,
- netdev_features_t features)
- {
-@@ -279,5 +280,6 @@ static int atlx_set_features(struct net_
-
- return 0;
- }
-+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
-
- #endif /* ATLX_C */
---- a/drivers/net/wireless/ath/ath6kl/main.c
-+++ b/drivers/net/wireless/ath/ath6kl/main.c
-@@ -1116,6 +1116,7 @@ static struct net_device_stats *ath6kl_g
- return &vif->net_stats;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- static int ath6kl_set_features(struct net_device *dev,
- netdev_features_t features)
- {
-@@ -1148,6 +1149,7 @@ static int ath6kl_set_features(struct ne
-
- return err;
- }
-+#endif
-
- static void ath6kl_set_multicast_list(struct net_device *ndev)
- {
-@@ -1295,7 +1297,9 @@ static const struct net_device_ops ath6k
- .ndo_stop = ath6kl_close,
- .ndo_start_xmit = ath6kl_data_tx,
- .ndo_get_stats = ath6kl_get_stats,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- .ndo_set_features = ath6kl_set_features,
-+#endif
- .ndo_set_rx_mode = ath6kl_set_multicast_list,
- };
-
-@@ -1312,7 +1316,11 @@ void init_netdev(struct net_device *dev)
- WMI_MAX_TX_META_SZ +
- ATH6KL_HTC_ALIGN_BYTES, 4);
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- dev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_RXCSUM;
-+#else
-+ dev->features |= NETIF_F_IP_CSUM;
-+#endif
-
- return;
- }
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/INFO b/patches/collateral-evolutions/network/40-netdev-hw-features/INFO
new file mode 100644
index 00000000..169682c6
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/INFO
@@ -0,0 +1,20 @@
+This reverts the commits that deal with hw_features and
+set_features, fix_features for kernels < 2.6.39.
+
+Below is one example commit being reverted, but we also do
+this for ath6kl and any driver that uses this in this file.
+
+commit 782d640afd15af7a1faf01cfe566ca4ac511319d
+Author: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+Date: Thu Apr 7 07:32:18 2011 +0000
+
+ net: atl*: convert to hw_features
+
+ Things left as they were:
+ - atl1: is RX checksum really enabled?
+ - atl2: copy-paste from atl1, with-errors-on-modify I presume
+ - atl1c: there's a bug: MTU can't be changed if device is not up
+
+ Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_ethtool.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_ethtool.c
new file mode 100644
index 00000000..b070a332
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_ethtool.c
@@ -0,0 +1,28 @@
+--- a/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c
++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_ethtool.c
+@@ -114,6 +114,13 @@
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++static u32 atl1c_get_tx_csum(struct net_device *netdev)
++{
++ return (netdev->features & NETIF_F_HW_CSUM) != 0;
++}
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
++
+ static u32 atl1c_get_msglevel(struct net_device *netdev)
+ {
+ struct atl1c_adapter *adapter = netdev_priv(netdev);
+@@ -301,6 +308,11 @@
+ .get_link = ethtool_op_get_link,
+ .get_eeprom_len = atl1c_get_eeprom_len,
+ .get_eeprom = atl1c_get_eeprom,
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++ .get_tx_csum = atl1c_get_tx_csum,
++ .get_sg = ethtool_op_get_sg,
++ .set_sg = ethtool_op_set_sg,
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
+ };
+
+ void atl1c_set_ethtool_ops(struct net_device *netdev)
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_main.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
new file mode 100644
index 00000000..e5b937ae
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
@@ -0,0 +1,72 @@
+--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+@@ -491,6 +491,7 @@
+ roundup(mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN, 8) : AT_RX_BUF_SIZE;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ static netdev_features_t atl1c_fix_features(struct net_device *netdev,
+ netdev_features_t features)
+ {
+@@ -519,6 +520,7 @@
+
+ return 0;
+ }
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+
+ /**
+ * atl1c_change_mtu - Change the Maximum Transfer Unit
+@@ -551,8 +553,19 @@
+ netdev->mtu = new_mtu;
+ adapter->hw.max_frame_size = new_mtu;
+ atl1c_set_rxbufsize(adapter, netdev);
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++ if (new_mtu > MAX_TSO_FRAME_SIZE) {
++ adapter->netdev->features &= ~NETIF_F_TSO;
++ adapter->netdev->features &= ~NETIF_F_TSO6;
++ } else {
++ adapter->netdev->features |= NETIF_F_TSO;
++ adapter->netdev->features |= NETIF_F_TSO6;
++ }
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
+ atl1c_down(adapter);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev_update_features(netdev);
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+ atl1c_up(adapter);
+ clear_bit(__AT_RESETTING, &adapter->flags);
+ }
+@@ -2459,8 +2472,10 @@
+ .ndo_set_mac_address = atl1c_set_mac_addr,
+ .ndo_set_rx_mode = atl1c_set_multi,
+ .ndo_change_mtu = atl1c_change_mtu,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ .ndo_fix_features = atl1c_fix_features,
+ .ndo_set_features = atl1c_set_features,
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+ .ndo_do_ioctl = atl1c_ioctl,
+ .ndo_tx_timeout = atl1c_tx_timeout,
+ .ndo_get_stats = atl1c_get_stats,
+@@ -2479,6 +2494,7 @@
+ atl1c_set_ethtool_ops(netdev);
+
+ /* TODO: add when ready */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev->hw_features = NETIF_F_SG |
+ NETIF_F_HW_CSUM |
+ NETIF_F_HW_VLAN_RX |
+@@ -2486,6 +2502,14 @@
+ NETIF_F_TSO6;
+ netdev->features = netdev->hw_features |
+ NETIF_F_HW_VLAN_TX;
++#else
++ netdev->features = NETIF_F_SG |
++ NETIF_F_HW_CSUM |
++ NETIF_F_HW_VLAN_TX |
++ NETIF_F_HW_VLAN_RX |
++ NETIF_F_TSO |
++ NETIF_F_TSO6;
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+ return 0;
+ }
+
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_ethtool.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_ethtool.c
new file mode 100644
index 00000000..0e66ca91
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_ethtool.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c
++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_ethtool.c
+@@ -384,6 +384,11 @@
+ .get_eeprom_len = atl1e_get_eeprom_len,
+ .get_eeprom = atl1e_get_eeprom,
+ .set_eeprom = atl1e_set_eeprom,
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++ .set_tx_csum = ethtool_op_set_tx_hw_csum,
++ .set_sg = ethtool_op_set_sg,
++ .set_tso = ethtool_op_set_tso,
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
+ };
+
+ void atl1e_set_ethtool_ops(struct net_device *netdev)
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_main.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_main.c
new file mode 100644
index 00000000..b0eb801d
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atl1e_atl1e_main.c
@@ -0,0 +1,57 @@
+--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+@@ -375,6 +375,7 @@
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ static netdev_features_t atl1e_fix_features(struct net_device *netdev,
+ netdev_features_t features)
+ {
+@@ -400,6 +401,7 @@
+
+ return 0;
+ }
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+
+ /**
+ * atl1e_change_mtu - Change the Maximum Transfer Unit
+@@ -1925,7 +1927,11 @@
+ * reschedule our watchdog timer */
+ set_bit(__AT_DOWN, &adapter->flags);
+
++#if defined(NETIF_F_LLTX) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netif_stop_queue(netdev);
++#else
++ netif_tx_disable(netdev);
++#endif
+
+ /* reset MAC to disable all RX/TX */
+ atl1e_reset_hw(&adapter->hw);
+@@ -2195,8 +2201,10 @@
+ .ndo_set_rx_mode = atl1e_set_multi,
+ .ndo_validate_addr = eth_validate_addr,
+ .ndo_set_mac_address = atl1e_set_mac_addr,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ .ndo_fix_features = atl1e_fix_features,
+ .ndo_set_features = atl1e_set_features,
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+ .ndo_change_mtu = atl1e_change_mtu,
+ .ndo_do_ioctl = atl1e_ioctl,
+ .ndo_tx_timeout = atl1e_tx_timeout,
+@@ -2216,10 +2224,15 @@
+ netdev->watchdog_timeo = AT_TX_WATCHDOG;
+ atl1e_set_ethtool_ops(netdev);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev->hw_features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO |
+ NETIF_F_HW_VLAN_RX;
+ netdev->features = netdev->hw_features | NETIF_F_LLTX |
+ NETIF_F_HW_VLAN_TX;
++#else
++ netdev->features = NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_TSO |
++ NETIF_F_HW_VLAN_RX | NETIF_F_LLTX | NETIF_F_HW_VLAN_TX;
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+
+ return 0;
+ }
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl1.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl1.c
new file mode 100644
index 00000000..08c85bd0
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl1.c
@@ -0,0 +1,53 @@
+--- a/drivers/net/ethernet/atheros/atlx/atl1.c
++++ b/drivers/net/ethernet/atheros/atlx/atl1.c
+@@ -2917,8 +2917,10 @@
+ .ndo_validate_addr = eth_validate_addr,
+ .ndo_set_mac_address = atl1_set_mac,
+ .ndo_change_mtu = atl1_change_mtu,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ .ndo_fix_features = atlx_fix_features,
+ .ndo_set_features = atlx_set_features,
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+ .ndo_do_ioctl = atlx_ioctl,
+ .ndo_tx_timeout = atlx_tx_timeout,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+@@ -3028,11 +3030,13 @@
+ netdev->features |= NETIF_F_SG;
+ netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_TSO |
+ NETIF_F_HW_VLAN_RX;
+
+ /* is this valid? see atl1_setup_mac_ctrl() */
+ netdev->features |= NETIF_F_RXCSUM;
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+
+ /*
+ * patch for some L1 of old version,
+@@ -3645,6 +3649,14 @@
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++/* FIXME: is this right? -- CHS */
++static u32 atl1_get_rx_csum(struct net_device *netdev)
++{
++ return 1;
++}
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
++
+ static void atl1_get_strings(struct net_device *netdev, u32 stringset,
+ u8 *data)
+ {
+@@ -3717,4 +3729,10 @@
+ .nway_reset = atl1_nway_reset,
+ .get_ethtool_stats = atl1_get_ethtool_stats,
+ .get_sset_count = atl1_get_sset_count,
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++ .get_rx_csum = atl1_get_rx_csum,
++ .set_tx_csum = ethtool_op_set_tx_hw_csum,
++ .set_sg = ethtool_op_set_sg,
++ .set_tso = ethtool_op_set_tso,
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
+ };
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl2.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl2.c
new file mode 100644
index 00000000..2a2681c8
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atl2.c
@@ -0,0 +1,71 @@
+--- a/drivers/net/ethernet/atheros/atlx/atl2.c
++++ b/drivers/net/ethernet/atheros/atlx/atl2.c
+@@ -396,6 +396,7 @@
+ atl2_vlan_mode(adapter->netdev, adapter->netdev->features);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ static netdev_features_t atl2_fix_features(struct net_device *netdev,
+ netdev_features_t features)
+ {
+@@ -421,6 +422,7 @@
+
+ return 0;
+ }
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+
+ static void atl2_intr_rx(struct atl2_adapter *adapter)
+ {
+@@ -1319,8 +1321,10 @@
+ .ndo_validate_addr = eth_validate_addr,
+ .ndo_set_mac_address = atl2_set_mac,
+ .ndo_change_mtu = atl2_change_mtu,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ .ndo_fix_features = atl2_fix_features,
+ .ndo_set_features = atl2_set_features,
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+ .ndo_do_ioctl = atl2_ioctl,
+ .ndo_tx_timeout = atl2_tx_timeout,
+ #ifdef CONFIG_NET_POLL_CONTROLLER
+@@ -1417,8 +1421,12 @@
+
+ err = -EIO;
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev->hw_features = NETIF_F_SG | NETIF_F_HW_VLAN_RX;
++#endif
++#if defined(NETIF_F_HW_VLAN_TX) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ netdev->features |= (NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX);
++#endif
+
+ /* Init PHY as early as possible due to power saving issue */
+ atl2_phy_init(&adapter->hw);
+@@ -1838,6 +1846,13 @@
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++static u32 atl2_get_tx_csum(struct net_device *netdev)
++{
++ return (netdev->features & NETIF_F_HW_CSUM) != 0;
++}
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
++
+ static u32 atl2_get_msglevel(struct net_device *netdev)
+ {
+ return 0;
+@@ -2107,6 +2122,14 @@
+ .get_eeprom_len = atl2_get_eeprom_len,
+ .get_eeprom = atl2_get_eeprom,
+ .set_eeprom = atl2_set_eeprom,
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39))
++ .get_tx_csum = atl2_get_tx_csum,
++ .get_sg = ethtool_op_get_sg,
++ .set_sg = ethtool_op_set_sg,
++#ifdef NETIF_F_TSO
++ .get_tso = ethtool_op_get_tso,
++#endif
++#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) */
+ };
+
+ static void atl2_set_ethtool_ops(struct net_device *netdev)
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atlx.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atlx.c
new file mode 100644
index 00000000..b0304171
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_ethernet_atheros_atlx_atlx.c
@@ -0,0 +1,17 @@
+--- a/drivers/net/ethernet/atheros/atlx/atlx.c
++++ b/drivers/net/ethernet/atheros/atlx/atlx.c
+@@ -254,6 +254,7 @@
+ atlx_vlan_mode(adapter->netdev, adapter->netdev->features);
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ static netdev_features_t atlx_fix_features(struct net_device *netdev,
+ netdev_features_t features)
+ {
+@@ -279,5 +280,6 @@
+
+ return 0;
+ }
++#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) */
+
+ #endif /* ATLX_C */
diff --git a/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_wireless_ath_ath6kl_main.c b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_wireless_ath_ath6kl_main.c
new file mode 100644
index 00000000..2704449a
--- /dev/null
+++ b/patches/collateral-evolutions/network/40-netdev-hw-features/drivers_net_wireless_ath_ath6kl_main.c
@@ -0,0 +1,40 @@
+--- a/drivers/net/wireless/ath/ath6kl/main.c
++++ b/drivers/net/wireless/ath/ath6kl/main.c
+@@ -1116,6 +1116,7 @@
+ return &vif->net_stats;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ static int ath6kl_set_features(struct net_device *dev,
+ netdev_features_t features)
+ {
+@@ -1148,6 +1149,7 @@
+
+ return err;
+ }
++#endif
+
+ static void ath6kl_set_multicast_list(struct net_device *ndev)
+ {
+@@ -1295,7 +1297,9 @@
+ .ndo_stop = ath6kl_close,
+ .ndo_start_xmit = ath6kl_data_tx,
+ .ndo_get_stats = ath6kl_get_stats,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ .ndo_set_features = ath6kl_set_features,
++#endif
+ .ndo_set_rx_mode = ath6kl_set_multicast_list,
+ };
+
+@@ -1312,7 +1316,11 @@
+ WMI_MAX_TX_META_SZ +
+ ATH6KL_HTC_ALIGN_BYTES, 4);
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
+ dev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_RXCSUM;
++#else
++ dev->features |= NETIF_F_IP_CSUM;
++#endif
+
+ return;
+ }
diff --git a/patches/collateral-evolutions/network/42-netlink_seq.patch b/patches/collateral-evolutions/network/42-netlink_seq/net_wireless_nl80211.c
index be712784..4d290197 100644
--- a/patches/collateral-evolutions/network/42-netlink_seq.patch
+++ b/patches/collateral-evolutions/network/42-netlink_seq/net_wireless_nl80211.c
@@ -1,6 +1,6 @@
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -5669,7 +5669,9 @@ static int nl80211_dump_scan(struct sk_b
+@@ -5669,7 +5669,9 @@
spin_lock_bh(&rdev->bss_lock);
cfg80211_bss_expire(rdev);
diff --git a/patches/collateral-evolutions/network/43-rename_pm_qos_request.patch b/patches/collateral-evolutions/network/43-rename_pm_qos_request/drivers_net_wireless_ipw2x00_ipw2100.c
index d000d913..da12bc15 100644
--- a/patches/collateral-evolutions/network/43-rename_pm_qos_request.patch
+++ b/patches/collateral-evolutions/network/43-rename_pm_qos_request/drivers_net_wireless_ipw2x00_ipw2100.c
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -175,7 +175,11 @@ that only one external action is invoked
+@@ -175,7 +175,11 @@
#define DRV_DESCRIPTION "Intel(R) PRO/Wireless 2100 Network Driver"
#define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation"
diff --git a/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/INFO b/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/INFO
new file mode 100644
index 00000000..461bdf07
--- /dev/null
+++ b/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/INFO
@@ -0,0 +1,2 @@
+Do not activate the mac80211 tracing for kernels <= 2.6.32
+
diff --git a/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/net_mac80211_Makefile b/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/net_mac80211_Makefile
new file mode 100644
index 00000000..abb5410c
--- /dev/null
+++ b/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/net_mac80211_Makefile
@@ -0,0 +1,13 @@
+--- a/net/mac80211/Makefile
++++ b/net/mac80211/Makefile
+@@ -25,7 +25,9 @@
+ wme.o \
+ event.o \
+ chan.o \
+- trace.o mlme.o
++ mlme.o
++
++mac80211-$(CONFIG_COMPAT_MAC80211_DRIVER_API_TRACER) += trace.o
+
+ mac80211-$(CONFIG_MAC80211_LEDS) += led.o
+ mac80211-$(CONFIG_MAC80211_DEBUGFS) += \
diff --git a/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing.patch b/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/net_wireless_Makefile
index 9c9858dd..9b54295a 100644
--- a/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing.patch
+++ b/patches/collateral-evolutions/network/44-deactivate-mac80211-tracing/net_wireless_Makefile
@@ -1,21 +1,6 @@
-Do not activate the mac80211 tracing for kernels <= 2.6.32
-
---- a/net/mac80211/Makefile
-+++ b/net/mac80211/Makefile
-@@ -25,7 +25,9 @@ mac80211-y := \
- wme.o \
- event.o \
- chan.o \
-- trace.o mlme.o
-+ mlme.o
-+
-+mac80211-$(CONFIG_COMPAT_MAC80211_DRIVER_API_TRACER) += trace.o
-
- mac80211-$(CONFIG_MAC80211_LEDS) += led.o
- mac80211-$(CONFIG_MAC80211_DEBUGFS) += \
--- a/net/wireless/Makefile
+++ b/net/wireless/Makefile
-@@ -10,7 +10,8 @@ obj-$(CONFIG_WEXT_SPY) += wext-spy.o
+@@ -10,7 +10,8 @@
obj-$(CONFIG_WEXT_PRIV) += wext-priv.o
cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o scan.o nl80211.o
diff --git a/patches/collateral-evolutions/network/45-remove-platform-id-table.patch b/patches/collateral-evolutions/network/45-remove-platform-id-table/drivers_net_wireless_ti_wl12xx_main.c
index c2a040da..803c3973 100644
--- a/patches/collateral-evolutions/network/45-remove-platform-id-table.patch
+++ b/patches/collateral-evolutions/network/45-remove-platform-id-table/drivers_net_wireless_ti_wl12xx_main.c
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ti/wl12xx/main.c
+++ b/drivers/net/wireless/ti/wl12xx/main.c
-@@ -1815,16 +1815,20 @@ out:
+@@ -1815,16 +1815,20 @@
return wlcore_remove(pdev);
}
diff --git a/patches/collateral-evolutions/network/46-use_other_workqueue/INFO b/patches/collateral-evolutions/network/46-use_other_workqueue/INFO
new file mode 100644
index 00000000..c9f4f371
--- /dev/null
+++ b/patches/collateral-evolutions/network/46-use_other_workqueue/INFO
@@ -0,0 +1,4 @@
+Old kernel versions do not support WQ_HIGHPRI and WQ_MEM_RECLAIM so we
+should use create_singlethread_workqueue() which was used at this
+position before.
+
diff --git a/patches/collateral-evolutions/network/46-use_other_workqueue.patch b/patches/collateral-evolutions/network/46-use_other_workqueue/net_bluetooth_hci_core.c
index 4f5ba875..bfce3d09 100644
--- a/patches/collateral-evolutions/network/46-use_other_workqueue.patch
+++ b/patches/collateral-evolutions/network/46-use_other_workqueue/net_bluetooth_hci_core.c
@@ -1,10 +1,6 @@
-Old kernel versions do not support WQ_HIGHPRI and WQ_MEM_RECLAIM so we
-should use create_singlethread_workqueue() which was used at this
-position before.
-
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
-@@ -2066,16 +2066,24 @@ int hci_register_dev(struct hci_dev *hde
+@@ -2066,16 +2066,24 @@
list_add(&hdev->list, &hci_dev_list);
write_unlock(&hci_dev_list_lock);
diff --git a/patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue/INFO b/patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue/INFO
new file mode 100644
index 00000000..dcb74b34
--- /dev/null
+++ b/patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue/INFO
@@ -0,0 +1,4 @@
+The struct netdev_queue does not have the attribute trans_start in
+kernel < 2.6.31. trans_start on struct net_device does the same
+on older kernels.
+
diff --git a/patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue.patch b/patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue/drivers_net_wireless_mwifiex_init.c
index 573b5794..cf7a04af 100644
--- a/patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue.patch
+++ b/patches/collateral-evolutions/network/47-no_trans_start_on_netdev_queue/drivers_net_wireless_mwifiex_init.c
@@ -1,10 +1,6 @@
-The struct netdev_queue does not have the attribute trans_start in
-kernel < 2.6.31. trans_start on struct net_device does the same
-on older kernels.
-
--- a/drivers/net/wireless/mwifiex/init.c
+++ b/drivers/net/wireless/mwifiex/init.c
-@@ -371,8 +371,10 @@ void mwifiex_set_trans_start(struct net_
+@@ -371,8 +371,10 @@
{
int i;
diff --git a/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping.patch b/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping.patch
deleted file mode 100644
index 670394c0..00000000
--- a/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Use skb_get_queue_mapping() for getting the queue_mapping member of
-skb. Some old kernels do not have the member queue_mapping, but this
-function always returns something.
-
---- a/drivers/net/wireless/b43/main.c
-+++ b/drivers/net/wireless/b43/main.c
-@@ -3456,11 +3456,11 @@ static void b43_op_tx(struct ieee80211_h
- }
- B43_WARN_ON(skb_shinfo(skb)->nr_frags);
-
-- skb_queue_tail(&wl->tx_queue[skb->queue_mapping], skb);
-- if (!wl->tx_queue_stopped[skb->queue_mapping]) {
-+ skb_queue_tail(&wl->tx_queue[skb_get_queue_mapping(skb)], skb);
-+ if (!wl->tx_queue_stopped[skb_get_queue_mapping(skb)]) {
- ieee80211_queue_work(wl->hw, &wl->tx_work);
- } else {
-- ieee80211_stop_queue(wl->hw, skb->queue_mapping);
-+ ieee80211_stop_queue(wl->hw, skb_get_queue_mapping(skb));
- }
- }
-
---- a/drivers/net/wireless/b43legacy/main.c
-+++ b/drivers/net/wireless/b43legacy/main.c
-@@ -2529,11 +2529,11 @@ static void b43legacy_op_tx(struct ieee8
- }
- B43legacy_WARN_ON(skb_shinfo(skb)->nr_frags);
-
-- skb_queue_tail(&wl->tx_queue[skb->queue_mapping], skb);
-- if (!wl->tx_queue_stopped[skb->queue_mapping])
-+ skb_queue_tail(&wl->tx_queue[skb_get_queue_mapping(skb)], skb);
-+ if (!wl->tx_queue_stopped[skb_get_queue_mapping(skb)])
- ieee80211_queue_work(wl->hw, &wl->tx_work);
- else
-- ieee80211_stop_queue(wl->hw, skb->queue_mapping);
-+ ieee80211_stop_queue(wl->hw, skb_get_queue_mapping(skb));
- }
-
- static int b43legacy_op_conf_tx(struct ieee80211_hw *hw,
diff --git a/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/INFO b/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/INFO
new file mode 100644
index 00000000..74635687
--- /dev/null
+++ b/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/INFO
@@ -0,0 +1,4 @@
+Use skb_get_queue_mapping() for getting the queue_mapping member of
+skb. Some old kernels do not have the member queue_mapping, but this
+function always returns something.
+
diff --git a/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43_main.c b/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43_main.c
new file mode 100644
index 00000000..279dfdde
--- /dev/null
+++ b/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43_main.c
@@ -0,0 +1,17 @@
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -3456,11 +3456,11 @@
+ }
+ B43_WARN_ON(skb_shinfo(skb)->nr_frags);
+
+- skb_queue_tail(&wl->tx_queue[skb->queue_mapping], skb);
+- if (!wl->tx_queue_stopped[skb->queue_mapping]) {
++ skb_queue_tail(&wl->tx_queue[skb_get_queue_mapping(skb)], skb);
++ if (!wl->tx_queue_stopped[skb_get_queue_mapping(skb)]) {
+ ieee80211_queue_work(wl->hw, &wl->tx_work);
+ } else {
+- ieee80211_stop_queue(wl->hw, skb->queue_mapping);
++ ieee80211_stop_queue(wl->hw, skb_get_queue_mapping(skb));
+ }
+ }
+
diff --git a/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43legacy_main.c b/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43legacy_main.c
new file mode 100644
index 00000000..e1b38ab0
--- /dev/null
+++ b/patches/collateral-evolutions/network/48-use_skb_get_queue_mapping/drivers_net_wireless_b43legacy_main.c
@@ -0,0 +1,17 @@
+--- a/drivers/net/wireless/b43legacy/main.c
++++ b/drivers/net/wireless/b43legacy/main.c
+@@ -2529,11 +2529,11 @@
+ }
+ B43legacy_WARN_ON(skb_shinfo(skb)->nr_frags);
+
+- skb_queue_tail(&wl->tx_queue[skb->queue_mapping], skb);
+- if (!wl->tx_queue_stopped[skb->queue_mapping])
++ skb_queue_tail(&wl->tx_queue[skb_get_queue_mapping(skb)], skb);
++ if (!wl->tx_queue_stopped[skb_get_queue_mapping(skb)])
+ ieee80211_queue_work(wl->hw, &wl->tx_work);
+ else
+- ieee80211_stop_queue(wl->hw, skb->queue_mapping);
++ ieee80211_stop_queue(wl->hw, skb_get_queue_mapping(skb));
+ }
+
+ static int b43legacy_op_conf_tx(struct ieee80211_hw *hw,
diff --git a/patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup/INFO b/patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup/INFO
new file mode 100644
index 00000000..ddb4f335
--- /dev/null
+++ b/patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup/INFO
@@ -0,0 +1,5 @@
+This section of the libertas driver calls functions that simply don't
+exist before the release of 3.1. This code in question was an addition,
+not a change from any existing code. It is safe to simply remove it for
+older kernels.
+
diff --git a/patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup.patch b/patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup/drivers_net_wireless_libertas_if_usb.c
index 5997a752..ec381372 100644
--- a/patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup.patch
+++ b/patches/collateral-evolutions/network/50-libertas-olpc-ec-wakeup/drivers_net_wireless_libertas_if_usb.c
@@ -1,11 +1,6 @@
-This section of the libertas driver calls functions that simply don't
-exist before the release of 3.1. This code in question was an addition,
-not a change from any existing code. It is safe to simply remove it for
-older kernels.
-
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -962,6 +962,7 @@ static int if_usb_suspend(struct usb_int
+@@ -962,6 +962,7 @@
goto out;
}
@@ -13,7 +8,7 @@ older kernels.
#ifdef CONFIG_OLPC
if (machine_is_olpc()) {
if (priv->wol_criteria == EHS_REMOVE_WAKEUP)
-@@ -970,6 +971,7 @@ static int if_usb_suspend(struct usb_int
+@@ -970,6 +971,7 @@
olpc_ec_wakeup_set(EC_SCI_SRC_WLAN);
}
#endif
diff --git a/patches/collateral-evolutions/network/52-tty-dev.patch b/patches/collateral-evolutions/network/52-tty-dev/INFO
index 659aa692..e9fe2d16 100644
--- a/patches/collateral-evolutions/network/52-tty-dev.patch
+++ b/patches/collateral-evolutions/network/52-tty-dev/INFO
@@ -17,16 +17,3 @@ Date: Fri Feb 11 17:19:26 2011 -0600
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
---- a/drivers/bluetooth/hci_ldisc.c
-+++ b/drivers/bluetooth/hci_ldisc.c
-@@ -421,7 +421,10 @@ static int hci_uart_register_dev(struct
- hdev->close = hci_uart_close;
- hdev->flush = hci_uart_flush;
- hdev->send = hci_uart_send_frame;
-+
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,36))
- SET_HCIDEV_DEV(hdev, hu->tty->dev);
-+#endif
-
- if (test_bit(HCI_UART_RAW_DEVICE, &hu->hdev_flags))
- set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
diff --git a/patches/collateral-evolutions/network/52-tty-dev/drivers_bluetooth_hci_ldisc.c b/patches/collateral-evolutions/network/52-tty-dev/drivers_bluetooth_hci_ldisc.c
new file mode 100644
index 00000000..0d4cd779
--- /dev/null
+++ b/patches/collateral-evolutions/network/52-tty-dev/drivers_bluetooth_hci_ldisc.c
@@ -0,0 +1,13 @@
+--- a/drivers/bluetooth/hci_ldisc.c
++++ b/drivers/bluetooth/hci_ldisc.c
+@@ -421,7 +421,10 @@
+ hdev->close = hci_uart_close;
+ hdev->flush = hci_uart_flush;
+ hdev->send = hci_uart_send_frame;
++
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,36))
+ SET_HCIDEV_DEV(hdev, hu->tty->dev);
++#endif
+
+ if (test_bit(HCI_UART_RAW_DEVICE, &hu->hdev_flags))
+ set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
diff --git a/patches/collateral-evolutions/network/53-pr_fmt.patch b/patches/collateral-evolutions/network/53-pr_fmt.patch
deleted file mode 100644
index f2fc5a57..00000000
--- a/patches/collateral-evolutions/network/53-pr_fmt.patch
+++ /dev/null
@@ -1,715 +0,0 @@
-This is the correct way to use pr_fmt. This helps avoid
-compiler warnings. This is going to be sent upstream.
-
---- a/drivers/bcma/bcma_private.h
-+++ b/drivers/bcma/bcma_private.h
-@@ -1,10 +1,10 @@
- #ifndef LINUX_BCMA_PRIVATE_H_
- #define LINUX_BCMA_PRIVATE_H_
-
--#ifndef pr_fmt
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
--#endif
-
-+#include <linux/printk.h>
- #include <linux/bcma/bcma.h>
- #include <linux/delay.h>
-
---- a/drivers/net/ethernet/broadcom/b44.c
-+++ b/drivers/net/ethernet/broadcom/b44.c
-@@ -10,9 +10,11 @@
- * Distribute under GPL.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/moduleparam.h>
- #include <linux/types.h>
---- a/drivers/net/wireless/iwlegacy/3945-mac.c
-+++ b/drivers/net/wireless/iwlegacy/3945-mac.c
-@@ -27,9 +27,11 @@
- *
- *****************************************************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/pci.h>
---- a/drivers/net/wireless/iwlegacy/4965-mac.c
-+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
-@@ -27,9 +27,11 @@
- *
- *****************************************************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/pci.h>
---- a/drivers/net/wireless/libertas/cfg.c
-+++ b/drivers/net/wireless/libertas/cfg.c
-@@ -6,8 +6,10 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/hardirq.h>
- #include <linux/sched.h>
- #include <linux/wait.h>
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -2,8 +2,10 @@
- * This file contains functions used in USB interface module.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/delay.h>
- #include <linux/module.h>
- #include <linux/firmware.h>
---- a/drivers/net/wireless/libertas/if_sdio.c
-+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -26,9 +26,11 @@
- * if_sdio_card_to_host() to pad the data.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/slab.h>
- #include <linux/firmware.h>
---- a/drivers/net/wireless/libertas/if_spi.c
-+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -17,8 +17,10 @@
- * (at your option) any later version.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/hardirq.h>
- #include <linux/interrupt.h>
- #include <linux/module.h>
---- a/drivers/net/wireless/libertas/rx.c
-+++ b/drivers/net/wireless/libertas/rx.c
-@@ -2,8 +2,10 @@
- * This file contains the handling of RX in wlan driver.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/etherdevice.h>
- #include <linux/hardirq.h>
- #include <linux/slab.h>
---- a/drivers/net/wireless/libertas/if_cs.c
-+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -21,8 +21,10 @@
-
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/slab.h>
- #include <linux/delay.h>
---- a/drivers/net/wireless/libertas/mesh.c
-+++ b/drivers/net/wireless/libertas/mesh.c
-@@ -1,5 +1,7 @@
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/delay.h>
- #include <linux/etherdevice.h>
- #include <linux/hardirq.h>
---- a/drivers/net/wireless/libertas/main.c
-+++ b/drivers/net/wireless/libertas/main.c
-@@ -4,8 +4,10 @@
- * thread etc..
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/delay.h>
- #include <linux/etherdevice.h>
---- a/drivers/net/wireless/libertas_tf/cmd.c
-+++ b/drivers/net/wireless/libertas_tf/cmd.c
-@@ -7,8 +7,10 @@
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- */
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/hardirq.h>
- #include <linux/slab.h>
- #include <linux/export.h>
---- a/drivers/net/wireless/libertas_tf/if_usb.c
-+++ b/drivers/net/wireless/libertas_tf/if_usb.c
-@@ -9,11 +9,13 @@
- */
- #define DRV_NAME "lbtf_usb"
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include "libertas_tf.h"
- #include "if_usb.h"
-
-+#include <linux/printk.h>
- #include <linux/delay.h>
- #include <linux/module.h>
- #include <linux/firmware.h>
---- a/drivers/net/wireless/libertas_tf/main.c
-+++ b/drivers/net/wireless/libertas_tf/main.c
-@@ -7,8 +7,10 @@
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- */
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/hardirq.h>
- #include <linux/slab.h>
-
---- a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
-@@ -14,9 +14,11 @@
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/delay.h>
- #include <linux/cordic.h>
-
---- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
-@@ -16,8 +16,10 @@
- */
-
- #define __UNDEF_NO_VERSION__
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/etherdevice.h>
- #include <linux/sched.h>
- #include <linux/firmware.h>
---- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
-@@ -15,8 +15,10 @@
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/pci_ids.h>
- #include <linux/if_ether.h>
- #include <net/cfg80211.h>
---- a/drivers/net/wireless/brcm80211/brcmutil/utils.c
-+++ b/drivers/net/wireless/brcm80211/brcmutil/utils.c
-@@ -14,8 +14,10 @@
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/netdevice.h>
- #include <linux/module.h>
-
---- a/net/bluetooth/lib.c
-+++ b/net/bluetooth/lib.c
-@@ -24,9 +24,11 @@
-
- /* Bluetooth kernel library. */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) "Bluetooth: " fmt
-
- #include <linux/export.h>
-+#include <linux/printk.h>
-
- #include <net/bluetooth/bluetooth.h>
-
---- a/net/wireless/lib80211.c
-+++ b/net/wireless/lib80211.c
-@@ -13,8 +13,10 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/ctype.h>
- #include <linux/ieee80211.h>
---- a/net/wireless/reg.c
-+++ b/net/wireless/reg.c
-@@ -42,9 +42,11 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/export.h>
- #include <linux/slab.h>
- #include <linux/list.h>
---- a/net/wireless/core.c
-+++ b/net/wireless/core.c
-@@ -4,8 +4,10 @@
- * Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/if.h>
- #include <linux/module.h>
- #include <linux/err.h>
---- a/net/wireless/lib80211_crypt_tkip.c
-+++ b/net/wireless/lib80211_crypt_tkip.c
-@@ -10,8 +10,10 @@
- * more details.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/err.h>
- #include <linux/module.h>
- #include <linux/init.h>
---- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
-+++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
-@@ -16,8 +16,10 @@
- * File contents: support functions for PCI/PCIe
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/delay.h>
-
- #include <defs.h>
---- a/drivers/net/wireless/rtlwifi/wifi.h
-+++ b/drivers/net/wireless/rtlwifi/wifi.h
-@@ -30,8 +30,10 @@
- #ifndef __RTL_WIFI_H__
- #define __RTL_WIFI_H__
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/sched.h>
- #include <linux/firmware.h>
- #include <linux/etherdevice.h>
---- a/drivers/net/wireless/ath/main.c
-+++ b/drivers/net/wireless/ath/main.c
-@@ -14,9 +14,11 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/module.h>
-
- #include "ath.h"
---- a/drivers/net/wireless/ath/regd.c
-+++ b/drivers/net/wireless/ath/regd.c
-@@ -14,9 +14,11 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/kernel.h>
-+#include <linux/printk.h>
- #include <linux/export.h>
- #include <net/cfg80211.h>
- #include <net/mac80211.h>
---- a/drivers/net/wireless/ath/ath5k/initvals.c
-+++ b/drivers/net/wireless/ath/ath5k/initvals.c
-@@ -19,8 +19,11 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "ath5k.h"
- #include "reg.h"
- #include "debug.h"
---- a/drivers/net/wireless/ath/ath5k/desc.c
-+++ b/drivers/net/wireless/ath/ath5k/desc.c
-@@ -21,8 +21,11 @@
- Hardware Descriptor Functions
- \******************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "ath5k.h"
- #include "reg.h"
- #include "debug.h"
---- a/drivers/net/wireless/ath/ath5k/dma.c
-+++ b/drivers/net/wireless/ath/ath5k/dma.c
-@@ -29,8 +29,11 @@
- * status registers (ISR).
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "ath5k.h"
- #include "reg.h"
- #include "debug.h"
---- a/drivers/net/wireless/ath/ath5k/qcu.c
-+++ b/drivers/net/wireless/ath/ath5k/qcu.c
-@@ -20,8 +20,11 @@
- Queue Control Unit, DCF Control Unit Functions
- \********************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "ath5k.h"
- #include "reg.h"
- #include "debug.h"
---- a/drivers/net/wireless/ath/ath5k/phy.c
-+++ b/drivers/net/wireless/ath/ath5k/phy.c
-@@ -22,8 +22,10 @@
- * PHY related functions *
- \***********************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/delay.h>
- #include <linux/slab.h>
- #include <asm/unaligned.h>
---- a/drivers/net/wireless/ath/ath5k/reset.c
-+++ b/drivers/net/wireless/ath/ath5k/reset.c
-@@ -23,10 +23,12 @@
- Reset function and helpers
- \****************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <asm/unaligned.h>
-
-+#include <linux/printk.h>
- #include <linux/pci.h> /* To determine if a card is pci-e */
- #include <linux/log2.h>
- #include <linux/platform_device.h>
---- a/drivers/net/wireless/ath/ath5k/attach.c
-+++ b/drivers/net/wireless/ath/ath5k/attach.c
-@@ -20,8 +20,10 @@
- * Attach/Detach Functions and helpers *
- \*************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/pci.h>
- #include <linux/slab.h>
- #include "ath5k.h"
---- a/drivers/net/wireless/ath/ath5k/base.c
-+++ b/drivers/net/wireless/ath/ath5k/base.c
-@@ -40,8 +40,10 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/delay.h>
- #include <linux/dma-mapping.h>
---- a/drivers/net/wireless/ath/ath5k/led.c
-+++ b/drivers/net/wireless/ath/ath5k/led.c
-@@ -39,8 +39,10 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/pci.h>
- #include "ath5k.h"
-
---- a/drivers/net/wireless/ath/ath5k/ani.c
-+++ b/drivers/net/wireless/ath/ath5k/ani.c
-@@ -14,8 +14,11 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "ath5k.h"
- #include "reg.h"
- #include "debug.h"
---- a/drivers/net/wireless/ath/ath5k/sysfs.c
-+++ b/drivers/net/wireless/ath/ath5k/sysfs.c
-@@ -1,5 +1,7 @@
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/device.h>
- #include <linux/pci.h>
-
---- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
-+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
-@@ -41,11 +41,14 @@
- *
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <net/mac80211.h>
- #include <asm/unaligned.h>
-
-+#include <linux/printk.h>
-+
- #include "ath5k.h"
- #include "base.h"
- #include "reg.h"
---- a/drivers/net/wireless/ath/ath5k/pci.c
-+++ b/drivers/net/wireless/ath/ath5k/pci.c
-@@ -14,8 +14,10 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/nl80211.h>
- #include <linux/pci.h>
- #include <linux/pci-aspm.h>
---- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
-+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
-@@ -15,8 +15,10 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/moduleparam.h>
- #include <linux/inetdevice.h>
- #include <linux/export.h>
---- a/drivers/net/wireless/ath/ath6kl/init.c
-+++ b/drivers/net/wireless/ath/ath6kl/init.c
-@@ -16,8 +16,10 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/moduleparam.h>
- #include <linux/errno.h>
- #include <linux/export.h>
---- a/drivers/net/wireless/ath/ath6kl/main.c
-+++ b/drivers/net/wireless/ath/ath6kl/main.c
-@@ -15,8 +15,11 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "core.h"
- #include "hif-ops.h"
- #include "cfg80211.h"
---- a/drivers/net/wireless/ath/ath6kl/txrx.c
-+++ b/drivers/net/wireless/ath/ath6kl/txrx.c
-@@ -15,8 +15,11 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "core.h"
- #include "debug.h"
- #include "htc-ops.h"
---- a/drivers/net/wireless/ath/ath9k/init.c
-+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -14,8 +14,10 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/dma-mapping.h>
- #include <linux/slab.h>
- #include <linux/ath9k_platform.h>
---- a/drivers/net/wireless/ath/ath9k/pci.c
-+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -14,8 +14,10 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/nl80211.h>
- #include <linux/pci.h>
- #include <linux/pci-aspm.h>
---- a/drivers/net/wireless/ath/ath9k/htc_hst.c
-+++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
-@@ -14,8 +14,11 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "htc.h"
-
- static int htc_issue_send(struct htc_target *target, struct sk_buff* skb,
---- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
-+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
-@@ -14,8 +14,11 @@
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
-+
- #include "htc.h"
-
- MODULE_AUTHOR("Atheros Communications");
---- a/drivers/net/wireless/iwlwifi/dvm/main.c
-+++ b/drivers/net/wireless/iwlwifi/dvm/main.c
-@@ -27,8 +27,10 @@
- *
- *****************************************************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/init.h>
---- a/drivers/net/wireless/iwlwifi/pcie/drv.c
-+++ b/drivers/net/wireless/iwlwifi/pcie/drv.c
-@@ -61,8 +61,10 @@
- *
- *****************************************************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/module.h>
- #include <linux/pci.h>
- #include <linux/pci-aspm.h>
---- a/drivers/net/wireless/ath/ath5k/eeprom.c
-+++ b/drivers/net/wireless/ath/ath5k/eeprom.c
-@@ -21,8 +21,10 @@
- * EEPROM access functions and helpers *
- \*************************************/
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/slab.h>
-
- #include "ath5k.h"
---- a/drivers/net/wireless/ath/ath5k/debug.c
-+++ b/drivers/net/wireless/ath/ath5k/debug.c
-@@ -58,8 +58,10 @@
- * THE POSSIBILITY OF SUCH DAMAGES.
- */
-
-+#undef pr_fmt
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-+#include <linux/printk.h>
- #include <linux/export.h>
- #include <linux/moduleparam.h>
-
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/INFO b/patches/collateral-evolutions/network/53-pr_fmt/INFO
new file mode 100644
index 00000000..cd88ad54
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/INFO
@@ -0,0 +1,3 @@
+This is the correct way to use pr_fmt. This helps avoid
+compiler warnings. This is going to be sent upstream.
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_bcma_bcma_private.h b/patches/collateral-evolutions/network/53-pr_fmt/drivers_bcma_bcma_private.h
new file mode 100644
index 00000000..913deecf
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_bcma_bcma_private.h
@@ -0,0 +1,15 @@
+--- a/drivers/bcma/bcma_private.h
++++ b/drivers/bcma/bcma_private.h
+@@ -1,10 +1,10 @@
+ #ifndef LINUX_BCMA_PRIVATE_H_
+ #define LINUX_BCMA_PRIVATE_H_
+
+-#ifndef pr_fmt
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+-#endif
+
++#include <linux/printk.h>
+ #include <linux/bcma/bcma.h>
+ #include <linux/delay.h>
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_ethernet_broadcom_b44.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_ethernet_broadcom_b44.c
new file mode 100644
index 00000000..15790588
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_ethernet_broadcom_b44.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/ethernet/broadcom/b44.c
++++ b/drivers/net/ethernet/broadcom/b44.c
+@@ -10,9 +10,11 @@
+ * Distribute under GPL.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/moduleparam.h>
+ #include <linux/types.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_ani.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_ani.c
new file mode 100644
index 00000000..53aee645
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_ani.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath5k/ani.c
++++ b/drivers/net/wireless/ath/ath5k/ani.c
+@@ -14,8 +14,11 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "ath5k.h"
+ #include "reg.h"
+ #include "debug.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_attach.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_attach.c
new file mode 100644
index 00000000..2c6ba9f2
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_attach.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath5k/attach.c
++++ b/drivers/net/wireless/ath/ath5k/attach.c
+@@ -20,8 +20,10 @@
+ * Attach/Detach Functions and helpers *
+ \*************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/pci.h>
+ #include <linux/slab.h>
+ #include "ath5k.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_base.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_base.c
new file mode 100644
index 00000000..fd837ab6
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_base.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath5k/base.c
++++ b/drivers/net/wireless/ath/ath5k/base.c
+@@ -40,8 +40,10 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/delay.h>
+ #include <linux/dma-mapping.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_debug.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_debug.c
new file mode 100644
index 00000000..ff2d8dfd
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_debug.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath5k/debug.c
++++ b/drivers/net/wireless/ath/ath5k/debug.c
+@@ -58,8 +58,10 @@
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/export.h>
+ #include <linux/moduleparam.h>
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_desc.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_desc.c
new file mode 100644
index 00000000..034e4812
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_desc.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath5k/desc.c
++++ b/drivers/net/wireless/ath/ath5k/desc.c
+@@ -21,8 +21,11 @@
+ Hardware Descriptor Functions
+ \******************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "ath5k.h"
+ #include "reg.h"
+ #include "debug.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_dma.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_dma.c
new file mode 100644
index 00000000..daaf54fc
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_dma.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath5k/dma.c
++++ b/drivers/net/wireless/ath/ath5k/dma.c
+@@ -29,8 +29,11 @@
+ * status registers (ISR).
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "ath5k.h"
+ #include "reg.h"
+ #include "debug.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_eeprom.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_eeprom.c
new file mode 100644
index 00000000..d05d207c
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_eeprom.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath5k/eeprom.c
++++ b/drivers/net/wireless/ath/ath5k/eeprom.c
+@@ -21,8 +21,10 @@
+ * EEPROM access functions and helpers *
+ \*************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/slab.h>
+
+ #include "ath5k.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_initvals.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_initvals.c
new file mode 100644
index 00000000..ba94dd39
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_initvals.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath5k/initvals.c
++++ b/drivers/net/wireless/ath/ath5k/initvals.c
+@@ -19,8 +19,11 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "ath5k.h"
+ #include "reg.h"
+ #include "debug.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_led.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_led.c
new file mode 100644
index 00000000..05b91bf5
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_led.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath5k/led.c
++++ b/drivers/net/wireless/ath/ath5k/led.c
+@@ -39,8 +39,10 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/pci.h>
+ #include "ath5k.h"
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_mac80211-ops.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_mac80211-ops.c
new file mode 100644
index 00000000..a11835bb
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_mac80211-ops.c
@@ -0,0 +1,17 @@
+--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
++++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
+@@ -41,11 +41,14 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <net/mac80211.h>
+ #include <asm/unaligned.h>
+
++#include <linux/printk.h>
++
+ #include "ath5k.h"
+ #include "base.h"
+ #include "reg.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_pci.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_pci.c
new file mode 100644
index 00000000..3affa135
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_pci.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath5k/pci.c
++++ b/drivers/net/wireless/ath/ath5k/pci.c
+@@ -14,8 +14,10 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/nl80211.h>
+ #include <linux/pci.h>
+ #include <linux/pci-aspm.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_phy.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_phy.c
new file mode 100644
index 00000000..84ab4dbb
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_phy.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath5k/phy.c
++++ b/drivers/net/wireless/ath/ath5k/phy.c
+@@ -22,8 +22,10 @@
+ * PHY related functions *
+ \***********************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/delay.h>
+ #include <linux/slab.h>
+ #include <asm/unaligned.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_qcu.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_qcu.c
new file mode 100644
index 00000000..92ae2fb0
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_qcu.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath5k/qcu.c
++++ b/drivers/net/wireless/ath/ath5k/qcu.c
+@@ -20,8 +20,11 @@
+ Queue Control Unit, DCF Control Unit Functions
+ \********************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "ath5k.h"
+ #include "reg.h"
+ #include "debug.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_reset.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_reset.c
new file mode 100644
index 00000000..852fa3e2
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_reset.c
@@ -0,0 +1,15 @@
+--- a/drivers/net/wireless/ath/ath5k/reset.c
++++ b/drivers/net/wireless/ath/ath5k/reset.c
+@@ -23,10 +23,12 @@
+ Reset function and helpers
+ \****************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <asm/unaligned.h>
+
++#include <linux/printk.h>
+ #include <linux/pci.h> /* To determine if a card is pci-e */
+ #include <linux/log2.h>
+ #include <linux/platform_device.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_sysfs.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_sysfs.c
new file mode 100644
index 00000000..b7782bdf
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath5k_sysfs.c
@@ -0,0 +1,10 @@
+--- a/drivers/net/wireless/ath/ath5k/sysfs.c
++++ b/drivers/net/wireless/ath/ath5k/sysfs.c
+@@ -1,5 +1,7 @@
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/device.h>
+ #include <linux/pci.h>
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_cfg80211.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_cfg80211.c
new file mode 100644
index 00000000..be1d7b35
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_cfg80211.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
++++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
+@@ -15,8 +15,10 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/moduleparam.h>
+ #include <linux/inetdevice.h>
+ #include <linux/export.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_init.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_init.c
new file mode 100644
index 00000000..b754cfdd
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_init.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath6kl/init.c
++++ b/drivers/net/wireless/ath/ath6kl/init.c
+@@ -16,8 +16,10 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/moduleparam.h>
+ #include <linux/errno.h>
+ #include <linux/export.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_main.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_main.c
new file mode 100644
index 00000000..1490bb3e
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_main.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath6kl/main.c
++++ b/drivers/net/wireless/ath/ath6kl/main.c
+@@ -15,8 +15,11 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "core.h"
+ #include "hif-ops.h"
+ #include "cfg80211.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_txrx.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_txrx.c
new file mode 100644
index 00000000..7a6fd422
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath6kl_txrx.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath6kl/txrx.c
++++ b/drivers/net/wireless/ath/ath6kl/txrx.c
+@@ -15,8 +15,11 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "core.h"
+ #include "debug.h"
+ #include "htc-ops.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_drv_init.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_drv_init.c
new file mode 100644
index 00000000..c1298567
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_drv_init.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
++++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
+@@ -14,8 +14,11 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "htc.h"
+
+ MODULE_AUTHOR("Atheros Communications");
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_hst.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_hst.c
new file mode 100644
index 00000000..b88569ae
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_htc_hst.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath9k/htc_hst.c
++++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
+@@ -14,8 +14,11 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
++
+ #include "htc.h"
+
+ static int htc_issue_send(struct htc_target *target, struct sk_buff* skb,
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_init.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_init.c
new file mode 100644
index 00000000..7de038ee
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_init.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -14,8 +14,10 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/dma-mapping.h>
+ #include <linux/slab.h>
+ #include <linux/ath9k_platform.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_pci.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_pci.c
new file mode 100644
index 00000000..45d362b3
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_ath9k_pci.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath9k/pci.c
++++ b/drivers/net/wireless/ath/ath9k/pci.c
+@@ -14,8 +14,10 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/nl80211.h>
+ #include <linux/pci.h>
+ #include <linux/pci-aspm.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_main.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_main.c
new file mode 100644
index 00000000..1fd91709
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_main.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/main.c
++++ b/drivers/net/wireless/ath/main.c
+@@ -14,9 +14,11 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/module.h>
+
+ #include "ath.h"
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_regd.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_regd.c
new file mode 100644
index 00000000..c147951c
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_ath_regd.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/regd.c
++++ b/drivers/net/wireless/ath/regd.c
+@@ -14,9 +14,11 @@
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/export.h>
+ #include <net/cfg80211.h>
+ #include <net/mac80211.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_aiutils.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_aiutils.c
new file mode 100644
index 00000000..eb604a1d
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_aiutils.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
+@@ -16,8 +16,10 @@
+ * File contents: support functions for PCI/PCIe
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/delay.h>
+
+ #include <defs.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_mac80211_if.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_mac80211_if.c
new file mode 100644
index 00000000..bcd4f846
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_mac80211_if.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+@@ -16,8 +16,10 @@
+ */
+
+ #define __UNDEF_NO_VERSION__
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/etherdevice.h>
+ #include <linux/sched.h>
+ #include <linux/firmware.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_main.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_main.c
new file mode 100644
index 00000000..5a33c9c3
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_main.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
+@@ -15,8 +15,10 @@
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/pci_ids.h>
+ #include <linux/if_ether.h>
+ #include <net/cfg80211.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_phy_phy_n.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_phy_phy_n.c
new file mode 100644
index 00000000..090eae88
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmsmac_phy_phy_n.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
+@@ -14,9 +14,11 @@
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/delay.h>
+ #include <linux/cordic.h>
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmutil_utils.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmutil_utils.c
new file mode 100644
index 00000000..9d6ed296
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_brcm80211_brcmutil_utils.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/brcm80211/brcmutil/utils.c
++++ b/drivers/net/wireless/brcm80211/brcmutil/utils.c
+@@ -14,8 +14,10 @@
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/netdevice.h>
+ #include <linux/module.h>
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_3945-mac.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_3945-mac.c
new file mode 100644
index 00000000..90afaff6
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_3945-mac.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/iwlegacy/3945-mac.c
++++ b/drivers/net/wireless/iwlegacy/3945-mac.c
+@@ -27,9 +27,11 @@
+ *
+ *****************************************************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+ #include <linux/pci.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_4965-mac.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_4965-mac.c
new file mode 100644
index 00000000..6b44e957
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlegacy_4965-mac.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/iwlegacy/4965-mac.c
++++ b/drivers/net/wireless/iwlegacy/4965-mac.c
+@@ -27,9 +27,11 @@
+ *
+ *****************************************************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
+ #include <linux/pci.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_dvm_main.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_dvm_main.c
new file mode 100644
index 00000000..74429ebe
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_dvm_main.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/iwlwifi/dvm/main.c
++++ b/drivers/net/wireless/iwlwifi/dvm/main.c
+@@ -27,8 +27,10 @@
+ *
+ *****************************************************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_pcie_drv.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_pcie_drv.c
new file mode 100644
index 00000000..0e06ca39
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_iwlwifi_pcie_drv.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/iwlwifi/pcie/drv.c
++++ b/drivers/net/wireless/iwlwifi/pcie/drv.c
+@@ -61,8 +61,10 @@
+ *
+ *****************************************************************************/
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/pci.h>
+ #include <linux/pci-aspm.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_cfg.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_cfg.c
new file mode 100644
index 00000000..d5250c54
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_cfg.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas/cfg.c
++++ b/drivers/net/wireless/libertas/cfg.c
+@@ -6,8 +6,10 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/hardirq.h>
+ #include <linux/sched.h>
+ #include <linux/wait.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_cs.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_cs.c
new file mode 100644
index 00000000..90063951
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_cs.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas/if_cs.c
++++ b/drivers/net/wireless/libertas/if_cs.c
+@@ -21,8 +21,10 @@
+
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/slab.h>
+ #include <linux/delay.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_sdio.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_sdio.c
new file mode 100644
index 00000000..13f793c7
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_sdio.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/libertas/if_sdio.c
++++ b/drivers/net/wireless/libertas/if_sdio.c
+@@ -26,9 +26,11 @@
+ * if_sdio_card_to_host() to pad the data.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/slab.h>
+ #include <linux/firmware.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_spi.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_spi.c
new file mode 100644
index 00000000..0946aab6
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_spi.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas/if_spi.c
++++ b/drivers/net/wireless/libertas/if_spi.c
+@@ -17,8 +17,10 @@
+ * (at your option) any later version.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/hardirq.h>
+ #include <linux/interrupt.h>
+ #include <linux/module.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_usb.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_usb.c
new file mode 100644
index 00000000..a53b3110
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_if_usb.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas/if_usb.c
++++ b/drivers/net/wireless/libertas/if_usb.c
+@@ -2,8 +2,10 @@
+ * This file contains functions used in USB interface module.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/delay.h>
+ #include <linux/module.h>
+ #include <linux/firmware.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_main.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_main.c
new file mode 100644
index 00000000..a3837c95
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_main.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas/main.c
++++ b/drivers/net/wireless/libertas/main.c
+@@ -4,8 +4,10 @@
+ * thread etc..
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/delay.h>
+ #include <linux/etherdevice.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_mesh.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_mesh.c
new file mode 100644
index 00000000..3e3b7e63
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_mesh.c
@@ -0,0 +1,10 @@
+--- a/drivers/net/wireless/libertas/mesh.c
++++ b/drivers/net/wireless/libertas/mesh.c
+@@ -1,5 +1,7 @@
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/delay.h>
+ #include <linux/etherdevice.h>
+ #include <linux/hardirq.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_rx.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_rx.c
new file mode 100644
index 00000000..eb81eaa5
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_rx.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas/rx.c
++++ b/drivers/net/wireless/libertas/rx.c
+@@ -2,8 +2,10 @@
+ * This file contains the handling of RX in wlan driver.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/etherdevice.h>
+ #include <linux/hardirq.h>
+ #include <linux/slab.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_cmd.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_cmd.c
new file mode 100644
index 00000000..27e8d844
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_cmd.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas_tf/cmd.c
++++ b/drivers/net/wireless/libertas_tf/cmd.c
+@@ -7,8 +7,10 @@
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ */
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/hardirq.h>
+ #include <linux/slab.h>
+ #include <linux/export.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_if_usb.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_if_usb.c
new file mode 100644
index 00000000..4d2fdf48
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_if_usb.c
@@ -0,0 +1,16 @@
+--- a/drivers/net/wireless/libertas_tf/if_usb.c
++++ b/drivers/net/wireless/libertas_tf/if_usb.c
+@@ -9,11 +9,13 @@
+ */
+ #define DRV_NAME "lbtf_usb"
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include "libertas_tf.h"
+ #include "if_usb.h"
+
++#include <linux/printk.h>
+ #include <linux/delay.h>
+ #include <linux/module.h>
+ #include <linux/firmware.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_main.c b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_main.c
new file mode 100644
index 00000000..88c9fd34
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_libertas_tf_main.c
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/libertas_tf/main.c
++++ b/drivers/net/wireless/libertas_tf/main.c
+@@ -7,8 +7,10 @@
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ */
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/hardirq.h>
+ #include <linux/slab.h>
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_rtlwifi_wifi.h b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_rtlwifi_wifi.h
new file mode 100644
index 00000000..bed0b294
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/drivers_net_wireless_rtlwifi_wifi.h
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/rtlwifi/wifi.h
++++ b/drivers/net/wireless/rtlwifi/wifi.h
+@@ -30,8 +30,10 @@
+ #ifndef __RTL_WIFI_H__
+ #define __RTL_WIFI_H__
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/sched.h>
+ #include <linux/firmware.h>
+ #include <linux/etherdevice.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/net_bluetooth_lib.c b/patches/collateral-evolutions/network/53-pr_fmt/net_bluetooth_lib.c
new file mode 100644
index 00000000..8492b14d
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/net_bluetooth_lib.c
@@ -0,0 +1,14 @@
+--- a/net/bluetooth/lib.c
++++ b/net/bluetooth/lib.c
+@@ -24,9 +24,11 @@
+
+ /* Bluetooth kernel library. */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) "Bluetooth: " fmt
+
+ #include <linux/export.h>
++#include <linux/printk.h>
+
+ #include <net/bluetooth/bluetooth.h>
+
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_core.c b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_core.c
new file mode 100644
index 00000000..cc37a50e
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_core.c
@@ -0,0 +1,13 @@
+--- a/net/wireless/core.c
++++ b/net/wireless/core.c
+@@ -4,8 +4,10 @@
+ * Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/if.h>
+ #include <linux/module.h>
+ #include <linux/err.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211.c b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211.c
new file mode 100644
index 00000000..29a3604a
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211.c
@@ -0,0 +1,13 @@
+--- a/net/wireless/lib80211.c
++++ b/net/wireless/lib80211.c
+@@ -13,8 +13,10 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/module.h>
+ #include <linux/ctype.h>
+ #include <linux/ieee80211.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211_crypt_tkip.c b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211_crypt_tkip.c
new file mode 100644
index 00000000..a5d56eef
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_lib80211_crypt_tkip.c
@@ -0,0 +1,13 @@
+--- a/net/wireless/lib80211_crypt_tkip.c
++++ b/net/wireless/lib80211_crypt_tkip.c
+@@ -10,8 +10,10 @@
+ * more details.
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
++#include <linux/printk.h>
+ #include <linux/err.h>
+ #include <linux/module.h>
+ #include <linux/init.h>
diff --git a/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_reg.c b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_reg.c
new file mode 100644
index 00000000..168b4d17
--- /dev/null
+++ b/patches/collateral-evolutions/network/53-pr_fmt/net_wireless_reg.c
@@ -0,0 +1,14 @@
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -42,9 +42,11 @@
+ *
+ */
+
++#undef pr_fmt
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/kernel.h>
++#include <linux/printk.h>
+ #include <linux/export.h>
+ #include <linux/slab.h>
+ #include <linux/list.h>
diff --git a/patches/collateral-evolutions/network/54-get_ts_info.patch b/patches/collateral-evolutions/network/54-get_ts_info/INFO
index 5e5764f3..a43dd308 100644
--- a/patches/collateral-evolutions/network/54-get_ts_info.patch
+++ b/patches/collateral-evolutions/network/54-get_ts_info/INFO
@@ -25,15 +25,3 @@ Date: Tue Apr 3 22:59:17 2012 +0000
Reviewed-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---- a/drivers/net/usb/usbnet.c
-+++ b/drivers/net/usb/usbnet.c
-@@ -933,7 +933,9 @@ static const struct ethtool_ops usbnet_e
- .get_drvinfo = usbnet_get_drvinfo,
- .get_msglevel = usbnet_get_msglevel,
- .set_msglevel = usbnet_set_msglevel,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .get_ts_info = ethtool_op_get_ts_info,
-+#endif
- };
-
- /*-------------------------------------------------------------------------*/
diff --git a/patches/collateral-evolutions/network/54-get_ts_info/drivers_net_usb_usbnet.c b/patches/collateral-evolutions/network/54-get_ts_info/drivers_net_usb_usbnet.c
new file mode 100644
index 00000000..0057f47b
--- /dev/null
+++ b/patches/collateral-evolutions/network/54-get_ts_info/drivers_net_usb_usbnet.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/usb/usbnet.c
++++ b/drivers/net/usb/usbnet.c
+@@ -933,7 +933,9 @@
+ .get_drvinfo = usbnet_get_drvinfo,
+ .get_msglevel = usbnet_get_msglevel,
+ .set_msglevel = usbnet_set_msglevel,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .get_ts_info = ethtool_op_get_ts_info,
++#endif
+ };
+
+ /*-------------------------------------------------------------------------*/
diff --git a/patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix/INFO b/patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix/INFO
new file mode 100644
index 00000000..9437ac31
--- /dev/null
+++ b/patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix/INFO
@@ -0,0 +1,5 @@
+In recent kernels, %pV will copy the va_list before using it.
+This isn't true for all kernels, so copy the va_list for use
+by the dev_*() functions, otherwise the kernel will crash if
+the message is printed and traced.
+
diff --git a/patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix.patch b/patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix/drivers_net_wireless_iwlwifi_iwl-debug.c
index 72f24802..a546b3ae 100644
--- a/patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix.patch
+++ b/patches/collateral-evolutions/network/55-iwlwifi-msg-trace-fix/drivers_net_wireless_iwlwifi_iwl-debug.c
@@ -1,11 +1,6 @@
-In recent kernels, %pV will copy the va_list before using it.
-This isn't true for all kernels, so copy the va_list for use
-by the dev_*() functions, otherwise the kernel will crash if
-the message is printed and traced.
-
--- a/drivers/net/wireless/iwlwifi/iwl-debug.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debug.c
-@@ -76,13 +76,16 @@ void __iwl_ ##fn(struct device *dev, con
+@@ -76,13 +76,16 @@
struct va_format vaf = { \
.fmt = fmt, \
}; \
@@ -26,7 +21,7 @@ the message is printed and traced.
}
__iwl_fn(warn)
-@@ -101,13 +104,18 @@ void __iwl_err(struct device *dev, bool
+@@ -101,13 +104,18 @@
va_list args;
va_start(args, fmt);
@@ -46,7 +41,7 @@ the message is printed and traced.
trace_iwlwifi_err(&vaf);
va_end(args);
}
-@@ -124,13 +132,19 @@ void __iwl_dbg(struct device *dev,
+@@ -124,13 +132,19 @@
va_list args;
va_start(args, fmt);
diff --git a/patches/collateral-evolutions/network/56-mac80211-trace-fix.patch b/patches/collateral-evolutions/network/56-mac80211-trace-fix/net_mac80211_trace.c
index 183cec25..6dc72946 100644
--- a/patches/collateral-evolutions/network/56-mac80211-trace-fix.patch
+++ b/patches/collateral-evolutions/network/56-mac80211-trace-fix/net_mac80211_trace.c
@@ -1,6 +1,6 @@
--- a/net/mac80211/trace.c
+++ b/net/mac80211/trace.c
-@@ -15,12 +15,16 @@ void __sdata_info(const char *fmt, ...)
+@@ -15,12 +15,16 @@
struct va_format vaf = {
.fmt = fmt,
};
@@ -19,7 +19,7 @@
trace_mac80211_info(&vaf);
va_end(args);
}
-@@ -33,10 +37,16 @@ void __sdata_dbg(bool print, const char
+@@ -33,10 +37,16 @@
va_list args;
va_start(args, fmt);
@@ -38,7 +38,7 @@
trace_mac80211_dbg(&vaf);
va_end(args);
}
-@@ -46,12 +56,16 @@ void __sdata_err(const char *fmt, ...)
+@@ -46,12 +56,16 @@
struct va_format vaf = {
.fmt = fmt,
};
@@ -57,7 +57,7 @@
trace_mac80211_err(&vaf);
va_end(args);
}
-@@ -64,10 +78,16 @@ void __wiphy_dbg(struct wiphy *wiphy, bo
+@@ -64,10 +78,16 @@
va_list args;
va_start(args, fmt);
diff --git a/patches/collateral-evolutions/network/57-iwlwifi-debug-fix/INFO b/patches/collateral-evolutions/network/57-iwlwifi-debug-fix/INFO
new file mode 100644
index 00000000..98fdfd1a
--- /dev/null
+++ b/patches/collateral-evolutions/network/57-iwlwifi-debug-fix/INFO
@@ -0,0 +1,5 @@
+Due to compat including linux/device.h before we do,
+we don't get a chance to #define DEBUG to get our
+debugging prints. This patch replaces dev_dbg with
+dev_printk to make them show up again.
+
diff --git a/patches/collateral-evolutions/network/57-iwlwifi-debug-fix.patch b/patches/collateral-evolutions/network/57-iwlwifi-debug-fix/drivers_net_wireless_iwlwifi_iwl-debug.c
index db7cc803..e9bd18a1 100644
--- a/patches/collateral-evolutions/network/57-iwlwifi-debug-fix.patch
+++ b/patches/collateral-evolutions/network/57-iwlwifi-debug-fix/drivers_net_wireless_iwlwifi_iwl-debug.c
@@ -1,11 +1,6 @@
-Due to compat including linux/device.h before we do,
-we don't get a chance to #define DEBUG to get our
-debugging prints. This patch replaces dev_dbg with
-dev_printk to make them show up again.
-
--- a/drivers/net/wireless/iwlwifi/iwl-debug.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debug.c
-@@ -139,8 +139,9 @@ void __iwl_dbg(struct device *dev,
+@@ -139,8 +139,9 @@
va_copy(args2, args);
vaf.va = &args2;
diff --git a/patches/collateral-evolutions/network/61-netdev-addr_assign_type.patch b/patches/collateral-evolutions/network/61-netdev-addr_assign_type.patch
deleted file mode 100644
index 81011518..00000000
--- a/patches/collateral-evolutions/network/61-netdev-addr_assign_type.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-You cannot backport assignment of netdev->addr_assign_type
-given that its part of the netdev data structure only in future
-kernels.
-
-mcgrof@tux ~/linux-next (git::master)$ git describe --contains c1f79426
-v2.6.36-rc1~571^2~104
-
---- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2622,7 +2622,9 @@ static int atl1c_probe(struct pci_dev *p
- }
- if (atl1c_read_mac_addr(&adapter->hw)) {
- /* got a random MAC address, set NET_ADDR_RANDOM to netdev */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- netdev->addr_assign_type = NET_ADDR_RANDOM;
-+#endif
- }
- memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
- if (netif_msg_probe(adapter))
---- a/drivers/net/ethernet/atheros/atlx/atl1.c
-+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
-@@ -3060,7 +3060,9 @@ static int atl1_probe(struct pci_dev *pd
- /* copy the MAC address out of the EEPROM */
- if (atl1_read_mac_addr(&adapter->hw)) {
- /* mark random mac */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
- netdev->addr_assign_type = NET_ADDR_RANDOM;
-+#endif
- }
- memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
-
diff --git a/patches/collateral-evolutions/network/61-netdev-addr_assign_type/INFO b/patches/collateral-evolutions/network/61-netdev-addr_assign_type/INFO
new file mode 100644
index 00000000..08a9b210
--- /dev/null
+++ b/patches/collateral-evolutions/network/61-netdev-addr_assign_type/INFO
@@ -0,0 +1,7 @@
+You cannot backport assignment of netdev->addr_assign_type
+given that its part of the netdev data structure only in future
+kernels.
+
+mcgrof@tux ~/linux-next (git::master)$ git describe --contains c1f79426
+v2.6.36-rc1~571^2~104
+
diff --git a/patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atl1c_atl1c_main.c b/patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
new file mode 100644
index 00000000..c66d5f28
--- /dev/null
+++ b/patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atl1c_atl1c_main.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+@@ -2622,7 +2622,9 @@
+ }
+ if (atl1c_read_mac_addr(&adapter->hw)) {
+ /* got a random MAC address, set NET_ADDR_RANDOM to netdev */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ netdev->addr_assign_type = NET_ADDR_RANDOM;
++#endif
+ }
+ memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
+ if (netif_msg_probe(adapter))
diff --git a/patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atlx_atl1.c b/patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atlx_atl1.c
new file mode 100644
index 00000000..b4237c22
--- /dev/null
+++ b/patches/collateral-evolutions/network/61-netdev-addr_assign_type/drivers_net_ethernet_atheros_atlx_atl1.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/ethernet/atheros/atlx/atl1.c
++++ b/drivers/net/ethernet/atheros/atlx/atl1.c
+@@ -3060,7 +3060,9 @@
+ /* copy the MAC address out of the EEPROM */
+ if (atl1_read_mac_addr(&adapter->hw)) {
+ /* mark random mac */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
+ netdev->addr_assign_type = NET_ADDR_RANDOM;
++#endif
+ }
+ memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
+
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm.patch b/patches/collateral-evolutions/network/62-usb_driver_lpm.patch
deleted file mode 100644
index 458ba4cf..00000000
--- a/patches/collateral-evolutions/network/62-usb_driver_lpm.patch
+++ /dev/null
@@ -1,276 +0,0 @@
---- a/drivers/bluetooth/ath3k.c
-+++ b/drivers/bluetooth/ath3k.c
-@@ -473,7 +473,9 @@ static struct usb_driver ath3k_driver =
- .probe = ath3k_probe,
- .disconnect = ath3k_disconnect,
- .id_table = ath3k_table,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(ath3k_driver);
---- a/drivers/bluetooth/bcm203x.c
-+++ b/drivers/bluetooth/bcm203x.c
-@@ -273,7 +273,9 @@ static struct usb_driver bcm203x_driver
- .probe = bcm203x_probe,
- .disconnect = bcm203x_disconnect,
- .id_table = bcm203x_table,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(bcm203x_driver);
---- a/drivers/bluetooth/bfusb.c
-+++ b/drivers/bluetooth/bfusb.c
-@@ -745,7 +745,9 @@ static struct usb_driver bfusb_driver =
- .probe = bfusb_probe,
- .disconnect = bfusb_disconnect,
- .id_table = bfusb_table,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(bfusb_driver);
---- a/drivers/bluetooth/bpa10x.c
-+++ b/drivers/bluetooth/bpa10x.c
-@@ -504,7 +504,9 @@ static struct usb_driver bpa10x_driver =
- .probe = bpa10x_probe,
- .disconnect = bpa10x_disconnect,
- .id_table = bpa10x_table,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(bpa10x_driver);
---- a/drivers/bluetooth/btusb.c
-+++ b/drivers/bluetooth/btusb.c
-@@ -1234,7 +1234,9 @@ static struct usb_driver btusb_driver =
- #endif
- .id_table = btusb_table,
- .supports_autosuspend = 1,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(btusb_driver);
---- a/drivers/net/usb/cdc_ether.c
-+++ b/drivers/net/usb/cdc_ether.c
-@@ -720,7 +720,9 @@ static struct usb_driver cdc_driver = {
- .resume = usbnet_resume,
- .reset_resume = usbnet_resume,
- .supports_autosuspend = 1,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(cdc_driver);
---- a/drivers/net/usb/rndis_host.c
-+++ b/drivers/net/usb/rndis_host.c
-@@ -642,7 +642,9 @@ static struct usb_driver rndis_driver =
- .disconnect = usbnet_disconnect,
- .suspend = usbnet_suspend,
- .resume = usbnet_resume,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(rndis_driver);
---- a/drivers/net/wireless/at76c50x-usb.c
-+++ b/drivers/net/wireless/at76c50x-usb.c
-@@ -2451,7 +2451,9 @@ static struct usb_driver at76_driver = {
- .probe = at76_probe,
- .disconnect = at76_disconnect,
- .id_table = dev_table,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- static int __init at76_mod_init(void)
---- a/drivers/net/wireless/ath/ath6kl/usb.c
-+++ b/drivers/net/wireless/ath/ath6kl/usb.c
-@@ -1207,7 +1207,9 @@ static struct usb_driver ath6kl_usb_driv
- .disconnect = ath6kl_usb_remove,
- .id_table = ath6kl_usb_ids,
- .supports_autosuspend = true,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- static int ath6kl_usb_init(void)
---- a/drivers/net/wireless/ath/ath9k/hif_usb.c
-+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
-@@ -1373,7 +1373,9 @@ static struct usb_driver ath9k_hif_usb_d
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
- .soft_unbind = 1,
- #endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- int ath9k_hif_usb_init(void)
---- a/drivers/net/wireless/ath/carl9170/usb.c
-+++ b/drivers/net/wireless/ath/carl9170/usb.c
-@@ -1166,7 +1166,9 @@ static struct usb_driver carl9170_driver
- .resume = carl9170_usb_resume,
- .reset_resume = carl9170_usb_resume,
- #endif /* CONFIG_PM */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(carl9170_driver);
---- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c
-+++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
-@@ -1498,7 +1498,9 @@ static struct usb_driver brcmf_usbdrvr =
- .resume = brcmf_usb_resume,
- .reset_resume = brcmf_usb_reset_resume,
- .supports_autosuspend = 1,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- static void brcmf_release_fw(struct list_head *q)
---- a/drivers/net/wireless/libertas/if_usb.c
-+++ b/drivers/net/wireless/libertas/if_usb.c
-@@ -1015,7 +1015,9 @@ static struct usb_driver if_usb_driver =
- .suspend = if_usb_suspend,
- .resume = if_usb_resume,
- .reset_resume = if_usb_resume,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(if_usb_driver);
---- a/drivers/net/wireless/libertas_tf/if_usb.c
-+++ b/drivers/net/wireless/libertas_tf/if_usb.c
-@@ -922,7 +922,9 @@ static struct usb_driver if_usb_driver =
- .id_table = if_usb_table,
- .suspend = if_usb_suspend,
- .resume = if_usb_resume,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(if_usb_driver);
---- a/drivers/net/wireless/orinoco/orinoco_usb.c
-+++ b/drivers/net/wireless/orinoco/orinoco_usb.c
-@@ -1758,7 +1758,9 @@ static struct usb_driver orinoco_driver
- .probe = ezusb_probe,
- .disconnect = ezusb_disconnect,
- .id_table = ezusb_table,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(orinoco_driver);
---- a/drivers/net/wireless/p54/p54usb.c
-+++ b/drivers/net/wireless/p54/p54usb.c
-@@ -1140,7 +1140,9 @@ static struct usb_driver p54u_driver = {
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
- .soft_unbind = 1,
- #endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(p54u_driver);
---- a/drivers/net/wireless/rndis_wlan.c
-+++ b/drivers/net/wireless/rndis_wlan.c
-@@ -3757,7 +3757,9 @@ static struct usb_driver rndis_wlan_driv
- .disconnect = usbnet_disconnect,
- .suspend = usbnet_suspend,
- .resume = usbnet_resume,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(rndis_wlan_driver);
---- a/drivers/net/wireless/rt2x00/rt2500usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
-@@ -1989,7 +1989,9 @@ static struct usb_driver rt2500usb_drive
- .suspend = rt2x00usb_suspend,
- .resume = rt2x00usb_resume,
- .reset_resume = rt2x00usb_resume,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(rt2500usb_driver);
---- a/drivers/net/wireless/rt2x00/rt2800usb.c
-+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -1375,7 +1375,9 @@ static struct usb_driver rt2800usb_drive
- .suspend = rt2x00usb_suspend,
- .resume = rt2x00usb_resume,
- .reset_resume = rt2x00usb_resume,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(rt2800usb_driver);
---- a/drivers/net/wireless/rt2x00/rt73usb.c
-+++ b/drivers/net/wireless/rt2x00/rt73usb.c
-@@ -2536,7 +2536,9 @@ static struct usb_driver rt73usb_driver
- .suspend = rt2x00usb_suspend,
- .resume = rt2x00usb_resume,
- .reset_resume = rt2x00usb_resume,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(rt73usb_driver);
---- a/drivers/net/wireless/rtl818x/rtl8187/dev.c
-+++ b/drivers/net/wireless/rtl818x/rtl8187/dev.c
-@@ -1673,7 +1673,9 @@ static struct usb_driver rtl8187_driver
- .id_table = rtl8187_table,
- .probe = rtl8187_probe,
- .disconnect = rtl8187_disconnect,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(rtl8187_driver);
---- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-@@ -384,7 +384,9 @@ static struct usb_driver rtl8192cu_drive
- #ifdef CONFIG_AUTOSUSPEND
- .supports_autosuspend = 1,
- #endif
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- module_usb_driver(rtl8192cu_driver);
---- a/drivers/net/wireless/zd1211rw/zd_usb.c
-+++ b/drivers/net/wireless/zd1211rw/zd_usb.c
-@@ -1540,7 +1540,9 @@ static struct usb_driver driver = {
- .disconnect = disconnect,
- .pre_reset = pre_reset,
- .post_reset = post_reset,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
- .disable_hub_initiated_lpm = 1,
-+#endif
- };
-
- struct workqueue_struct *zd_workqueue;
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_ath3k.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_ath3k.c
new file mode 100644
index 00000000..05b6ea90
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_ath3k.c
@@ -0,0 +1,12 @@
+--- a/drivers/bluetooth/ath3k.c
++++ b/drivers/bluetooth/ath3k.c
+@@ -473,7 +473,9 @@
+ .probe = ath3k_probe,
+ .disconnect = ath3k_disconnect,
+ .id_table = ath3k_table,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(ath3k_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bcm203x.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bcm203x.c
new file mode 100644
index 00000000..3dba6a39
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bcm203x.c
@@ -0,0 +1,12 @@
+--- a/drivers/bluetooth/bcm203x.c
++++ b/drivers/bluetooth/bcm203x.c
+@@ -273,7 +273,9 @@
+ .probe = bcm203x_probe,
+ .disconnect = bcm203x_disconnect,
+ .id_table = bcm203x_table,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(bcm203x_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bfusb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bfusb.c
new file mode 100644
index 00000000..0830697a
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bfusb.c
@@ -0,0 +1,12 @@
+--- a/drivers/bluetooth/bfusb.c
++++ b/drivers/bluetooth/bfusb.c
+@@ -745,7 +745,9 @@
+ .probe = bfusb_probe,
+ .disconnect = bfusb_disconnect,
+ .id_table = bfusb_table,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(bfusb_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bpa10x.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bpa10x.c
new file mode 100644
index 00000000..ee06c084
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_bpa10x.c
@@ -0,0 +1,12 @@
+--- a/drivers/bluetooth/bpa10x.c
++++ b/drivers/bluetooth/bpa10x.c
+@@ -504,7 +504,9 @@
+ .probe = bpa10x_probe,
+ .disconnect = bpa10x_disconnect,
+ .id_table = bpa10x_table,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(bpa10x_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_btusb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_btusb.c
new file mode 100644
index 00000000..5a0cf012
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_bluetooth_btusb.c
@@ -0,0 +1,12 @@
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -1234,7 +1234,9 @@
+ #endif
+ .id_table = btusb_table,
+ .supports_autosuspend = 1,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(btusb_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_cdc_ether.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_cdc_ether.c
new file mode 100644
index 00000000..e4b942ad
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_cdc_ether.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/usb/cdc_ether.c
++++ b/drivers/net/usb/cdc_ether.c
+@@ -720,7 +720,9 @@
+ .resume = usbnet_resume,
+ .reset_resume = usbnet_resume,
+ .supports_autosuspend = 1,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(cdc_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_rndis_host.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_rndis_host.c
new file mode 100644
index 00000000..23126322
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_usb_rndis_host.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/usb/rndis_host.c
++++ b/drivers/net/usb/rndis_host.c
+@@ -642,7 +642,9 @@
+ .disconnect = usbnet_disconnect,
+ .suspend = usbnet_suspend,
+ .resume = usbnet_resume,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(rndis_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_at76c50x-usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_at76c50x-usb.c
new file mode 100644
index 00000000..b210ec15
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_at76c50x-usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/at76c50x-usb.c
++++ b/drivers/net/wireless/at76c50x-usb.c
+@@ -2451,7 +2451,9 @@
+ .probe = at76_probe,
+ .disconnect = at76_disconnect,
+ .id_table = dev_table,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ static int __init at76_mod_init(void)
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath6kl_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath6kl_usb.c
new file mode 100644
index 00000000..300813a8
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath6kl_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ath/ath6kl/usb.c
++++ b/drivers/net/wireless/ath/ath6kl/usb.c
+@@ -1207,7 +1207,9 @@
+ .disconnect = ath6kl_usb_remove,
+ .id_table = ath6kl_usb_ids,
+ .supports_autosuspend = true,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ static int ath6kl_usb_init(void)
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath9k_hif_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath9k_hif_usb.c
new file mode 100644
index 00000000..3de2052b
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_ath9k_hif_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
++++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
+@@ -1373,7 +1373,9 @@
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
+ .soft_unbind = 1,
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ int ath9k_hif_usb_init(void)
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_carl9170_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_carl9170_usb.c
new file mode 100644
index 00000000..b5d5530c
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_ath_carl9170_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ath/carl9170/usb.c
++++ b/drivers/net/wireless/ath/carl9170/usb.c
+@@ -1166,7 +1166,9 @@
+ .resume = carl9170_usb_resume,
+ .reset_resume = carl9170_usb_resume,
+ #endif /* CONFIG_PM */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(carl9170_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_brcm80211_brcmfmac_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_brcm80211_brcmfmac_usb.c
new file mode 100644
index 00000000..b5fa593b
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_brcm80211_brcmfmac_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
+@@ -1498,7 +1498,9 @@
+ .resume = brcmf_usb_resume,
+ .reset_resume = brcmf_usb_reset_resume,
+ .supports_autosuspend = 1,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ static void brcmf_release_fw(struct list_head *q)
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_if_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_if_usb.c
new file mode 100644
index 00000000..7c30cc5c
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_if_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/libertas/if_usb.c
++++ b/drivers/net/wireless/libertas/if_usb.c
+@@ -1015,7 +1015,9 @@
+ .suspend = if_usb_suspend,
+ .resume = if_usb_resume,
+ .reset_resume = if_usb_resume,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(if_usb_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_tf_if_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_tf_if_usb.c
new file mode 100644
index 00000000..22466f26
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_libertas_tf_if_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/libertas_tf/if_usb.c
++++ b/drivers/net/wireless/libertas_tf/if_usb.c
+@@ -922,7 +922,9 @@
+ .id_table = if_usb_table,
+ .suspend = if_usb_suspend,
+ .resume = if_usb_resume,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(if_usb_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_orinoco_orinoco_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_orinoco_orinoco_usb.c
new file mode 100644
index 00000000..c2af629c
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_orinoco_orinoco_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/orinoco/orinoco_usb.c
++++ b/drivers/net/wireless/orinoco/orinoco_usb.c
+@@ -1758,7 +1758,9 @@
+ .probe = ezusb_probe,
+ .disconnect = ezusb_disconnect,
+ .id_table = ezusb_table,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(orinoco_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_p54_p54usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_p54_p54usb.c
new file mode 100644
index 00000000..8f4397ba
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_p54_p54usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/p54/p54usb.c
++++ b/drivers/net/wireless/p54/p54usb.c
+@@ -1140,7 +1140,9 @@
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
+ .soft_unbind = 1,
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(p54u_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rndis_wlan.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rndis_wlan.c
new file mode 100644
index 00000000..fa077acb
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rndis_wlan.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/rndis_wlan.c
++++ b/drivers/net/wireless/rndis_wlan.c
+@@ -3757,7 +3757,9 @@
+ .disconnect = usbnet_disconnect,
+ .suspend = usbnet_suspend,
+ .resume = usbnet_resume,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(rndis_wlan_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2500usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2500usb.c
new file mode 100644
index 00000000..adb8e06a
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2500usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/rt2x00/rt2500usb.c
++++ b/drivers/net/wireless/rt2x00/rt2500usb.c
+@@ -1989,7 +1989,9 @@
+ .suspend = rt2x00usb_suspend,
+ .resume = rt2x00usb_resume,
+ .reset_resume = rt2x00usb_resume,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(rt2500usb_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2800usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2800usb.c
new file mode 100644
index 00000000..bf384886
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt2800usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/rt2x00/rt2800usb.c
++++ b/drivers/net/wireless/rt2x00/rt2800usb.c
+@@ -1375,7 +1375,9 @@
+ .suspend = rt2x00usb_suspend,
+ .resume = rt2x00usb_resume,
+ .reset_resume = rt2x00usb_resume,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(rt2800usb_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt73usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt73usb.c
new file mode 100644
index 00000000..7955ace2
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rt2x00_rt73usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/rt2x00/rt73usb.c
++++ b/drivers/net/wireless/rt2x00/rt73usb.c
+@@ -2536,7 +2536,9 @@
+ .suspend = rt2x00usb_suspend,
+ .resume = rt2x00usb_resume,
+ .reset_resume = rt2x00usb_resume,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(rt73usb_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtl818x_rtl8187_dev.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtl818x_rtl8187_dev.c
new file mode 100644
index 00000000..ead8be9f
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtl818x_rtl8187_dev.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/rtl818x/rtl8187/dev.c
++++ b/drivers/net/wireless/rtl818x/rtl8187/dev.c
+@@ -1673,7 +1673,9 @@
+ .id_table = rtl8187_table,
+ .probe = rtl8187_probe,
+ .disconnect = rtl8187_disconnect,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(rtl8187_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtlwifi_rtl8192cu_sw.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtlwifi_rtl8192cu_sw.c
new file mode 100644
index 00000000..2d446441
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_rtlwifi_rtl8192cu_sw.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
++++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+@@ -384,7 +384,9 @@
+ #ifdef CONFIG_AUTOSUSPEND
+ .supports_autosuspend = 1,
+ #endif
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ module_usb_driver(rtl8192cu_driver);
diff --git a/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_zd1211rw_zd_usb.c b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_zd1211rw_zd_usb.c
new file mode 100644
index 00000000..315f7ead
--- /dev/null
+++ b/patches/collateral-evolutions/network/62-usb_driver_lpm/drivers_net_wireless_zd1211rw_zd_usb.c
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/zd1211rw/zd_usb.c
++++ b/drivers/net/wireless/zd1211rw/zd_usb.c
+@@ -1540,7 +1540,9 @@
+ .disconnect = disconnect,
+ .pre_reset = pre_reset,
+ .post_reset = post_reset,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
+ .disable_hub_initiated_lpm = 1,
++#endif
+ };
+
+ struct workqueue_struct *zd_workqueue;
diff --git a/patches/collateral-evolutions/network/63-tty-termios.patch b/patches/collateral-evolutions/network/63-tty-termios.patch
deleted file mode 100644
index d84e303a..00000000
--- a/patches/collateral-evolutions/network/63-tty-termios.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-This patch requires a manual backport:
-
-commit adc8d746caa67fff4b53ba3e5163a6cbacc3b523
-Author: Alan Cox <alan@linux.intel.com>
-Date: Sat Jul 14 15:31:47 2012 +0100
-
- tty: move the termios object into the tty
-
- This will let us sort out a whole pile of tty related races. The
- alternative would be to keep points and refcount the termios objects.
- However
- 1. They are tiny anyway
- 2. Many devices don't use the stored copies
- 3. We can remove a pty special case
-
- Signed-off-by: Alan Cox <alan@linux.intel.com>
- Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
-We cannot use compat.git for this given that the assignment
-was not done through a static inline helper.
-
---- a/drivers/bluetooth/hci_ath.c
-+++ b/drivers/bluetooth/hci_ath.c
-@@ -58,7 +58,11 @@ static int ath_wakeup_ar3k(struct tty_st
- return status;
-
- /* Disable Automatic RTSCTS */
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
- ktermios = tty->termios;
-+#else
-+ memcpy(&ktermios, tty->termios, sizeof(ktermios));
-+#endif
- ktermios.c_cflag &= ~CRTSCTS;
- tty_set_termios(tty, &ktermios);
-
---- a/net/bluetooth/rfcomm/tty.c
-+++ b/net/bluetooth/rfcomm/tty.c
-@@ -868,7 +868,11 @@ static int rfcomm_tty_ioctl(struct tty_s
-
- static void rfcomm_tty_set_termios(struct tty_struct *tty, struct ktermios *old)
- {
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
- struct ktermios *new = &tty->termios;
-+#else
-+ struct ktermios *new = tty->termios;
-+#endif
- int old_baud_rate = tty_termios_baud_rate(old);
- int new_baud_rate = tty_termios_baud_rate(new);
-
diff --git a/patches/collateral-evolutions/network/63-tty-termios/INFO b/patches/collateral-evolutions/network/63-tty-termios/INFO
new file mode 100644
index 00000000..a5e536d3
--- /dev/null
+++ b/patches/collateral-evolutions/network/63-tty-termios/INFO
@@ -0,0 +1,21 @@
+This patch requires a manual backport:
+
+commit adc8d746caa67fff4b53ba3e5163a6cbacc3b523
+Author: Alan Cox <alan@linux.intel.com>
+Date: Sat Jul 14 15:31:47 2012 +0100
+
+ tty: move the termios object into the tty
+
+ This will let us sort out a whole pile of tty related races. The
+ alternative would be to keep points and refcount the termios objects.
+ However
+ 1. They are tiny anyway
+ 2. Many devices don't use the stored copies
+ 3. We can remove a pty special case
+
+ Signed-off-by: Alan Cox <alan@linux.intel.com>
+ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+We cannot use compat.git for this given that the assignment
+was not done through a static inline helper.
+
diff --git a/patches/collateral-evolutions/network/63-tty-termios/drivers_bluetooth_hci_ath.c b/patches/collateral-evolutions/network/63-tty-termios/drivers_bluetooth_hci_ath.c
new file mode 100644
index 00000000..8108b775
--- /dev/null
+++ b/patches/collateral-evolutions/network/63-tty-termios/drivers_bluetooth_hci_ath.c
@@ -0,0 +1,14 @@
+--- a/drivers/bluetooth/hci_ath.c
++++ b/drivers/bluetooth/hci_ath.c
+@@ -58,7 +58,11 @@
+ return status;
+
+ /* Disable Automatic RTSCTS */
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+ ktermios = tty->termios;
++#else
++ memcpy(&ktermios, tty->termios, sizeof(ktermios));
++#endif
+ ktermios.c_cflag &= ~CRTSCTS;
+ tty_set_termios(tty, &ktermios);
+
diff --git a/patches/collateral-evolutions/network/63-tty-termios/net_bluetooth_rfcomm_tty.c b/patches/collateral-evolutions/network/63-tty-termios/net_bluetooth_rfcomm_tty.c
new file mode 100644
index 00000000..4e93ae5b
--- /dev/null
+++ b/patches/collateral-evolutions/network/63-tty-termios/net_bluetooth_rfcomm_tty.c
@@ -0,0 +1,14 @@
+--- a/net/bluetooth/rfcomm/tty.c
++++ b/net/bluetooth/rfcomm/tty.c
+@@ -868,7 +868,11 @@
+
+ static void rfcomm_tty_set_termios(struct tty_struct *tty, struct ktermios *old)
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+ struct ktermios *new = &tty->termios;
++#else
++ struct ktermios *new = tty->termios;
++#endif
+ int old_baud_rate = tty_termios_baud_rate(old);
+ int new_baud_rate = tty_termios_baud_rate(new);
+
diff --git a/patches/collateral-evolutions/network/64-b44-32bit-stats/INFO b/patches/collateral-evolutions/network/64-b44-32bit-stats/INFO
new file mode 100644
index 00000000..ebe61cff
--- /dev/null
+++ b/patches/collateral-evolutions/network/64-b44-32bit-stats/INFO
@@ -0,0 +1,14 @@
+This patch requires a manual backport:
+
+commit eeda8585522bcc173f91d6254dfa63e871087c54
+Author: Kevin Groeneveld <kgroeneveld@gmail.com>
+Date: Tue Jul 17 17:46:01 2012 +0000
+
+ b44: add 64 bit stats
+
+ Add support for 64 bit stats to Broadcom b44 ethernet driver.
+
+ Signed-off-by: Kevin Groeneveld <kgroeneveld@gmail.com>
+ Signed-off-by: Eric Dumazet <edumazet@google.com>
+ Signed-off-by: David S. Miller <davem@davemloft.net>
+
diff --git a/patches/collateral-evolutions/network/64-b44-32bit-stats.patch b/patches/collateral-evolutions/network/64-b44-32bit-stats/drivers_net_ethernet_broadcom_b44.c
index 0169ad94..06e2f0c8 100644
--- a/patches/collateral-evolutions/network/64-b44-32bit-stats.patch
+++ b/patches/collateral-evolutions/network/64-b44-32bit-stats/drivers_net_ethernet_broadcom_b44.c
@@ -1,17 +1,3 @@
-This patch requires a manual backport:
-
-commit eeda8585522bcc173f91d6254dfa63e871087c54
-Author: Kevin Groeneveld <kgroeneveld@gmail.com>
-Date: Tue Jul 17 17:46:01 2012 +0000
-
- b44: add 64 bit stats
-
- Add support for 64 bit stats to Broadcom b44 ethernet driver.
-
- Signed-off-by: Kevin Groeneveld <kgroeneveld@gmail.com>
- Signed-off-by: Eric Dumazet <edumazet@google.com>
- Signed-off-by: David S. Miller <davem@davemloft.net>
-
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -31,6 +31,7 @@
@@ -22,7 +8,7 @@ Date: Tue Jul 17 17:46:01 2012 +0000
#include <asm/uaccess.h>
#include <asm/io.h>
-@@ -1638,10 +1639,17 @@ static int b44_close(struct net_device *
+@@ -1638,10 +1639,17 @@
return 0;
}
@@ -40,7 +26,7 @@ Date: Tue Jul 17 17:46:01 2012 +0000
struct b44_hw_stats *hwstat = &bp->hw_stats;
unsigned int start;
-@@ -2130,7 +2138,11 @@ static const struct net_device_ops b44_n
+@@ -2130,7 +2138,11 @@
.ndo_open = b44_open,
.ndo_stop = b44_close,
.ndo_start_xmit = b44_start_xmit,
diff --git a/patches/collateral-evolutions/network/65-ignore-dismantle/INFO b/patches/collateral-evolutions/network/65-ignore-dismantle/INFO
new file mode 100644
index 00000000..6872df66
--- /dev/null
+++ b/patches/collateral-evolutions/network/65-ignore-dismantle/INFO
@@ -0,0 +1,9 @@
+The following patch makes use of the dismantle member in struct
+net_device, this patch removes that access on older kernels.
+
+commit 9d5d496c3464b7ad0ba942b4ada5f27c07e07079
+Author: Daniel Drake <dsd@laptop.org>
+Date: Mon Jul 30 22:58:04 2012 +0100
+
+ libertas: don't reset card on error when it is being removed
+
diff --git a/patches/collateral-evolutions/network/65-ignore-dismantle.patch b/patches/collateral-evolutions/network/65-ignore-dismantle/drivers_net_wireless_libertas_main.c
index fde4ce24..2ff38063 100644
--- a/patches/collateral-evolutions/network/65-ignore-dismantle.patch
+++ b/patches/collateral-evolutions/network/65-ignore-dismantle/drivers_net_wireless_libertas_main.c
@@ -1,15 +1,6 @@
-The following patch makes use of the dismantle member in struct
-net_device, this patch removes that access on older kernels.
-
-commit 9d5d496c3464b7ad0ba942b4ada5f27c07e07079
-Author: Daniel Drake <dsd@laptop.org>
-Date: Mon Jul 30 22:58:04 2012 +0100
-
- libertas: don't reset card on error when it is being removed
-
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
-@@ -592,7 +592,11 @@ static int lbs_thread(void *data)
+@@ -592,7 +592,11 @@
/* Reset card, but only when it isn't in the process
* of being shutdown anyway. */
diff --git a/patches/collateral-evolutions/network/66-uapi-changes.patch b/patches/collateral-evolutions/network/66-uapi-changes/INFO
index 362f9bc1..aac02254 100644
--- a/patches/collateral-evolutions/network/66-uapi-changes.patch
+++ b/patches/collateral-evolutions/network/66-uapi-changes/INFO
@@ -16,14 +16,3 @@ we linux_next into the user's kernels rfkill.h and if
the kernel is old we still to the rfkill_backport.h
naming scheme.
---- a/include/linux/rfkill_backport.h
-+++ b/include/linux/rfkill_backport.h
-@@ -18,7 +18,7 @@
- #ifndef __RFKILL_H
- #define __RFKILL_H
-
--#include <uapi/linux/rfkill.h>
-+#include <uapi/linux/rfkill_backport.h>
-
- /* don't allow anyone to use these in the kernel */
- enum rfkill_user_states {
diff --git a/patches/collateral-evolutions/network/66-uapi-changes/include_linux_rfkill_backport.h b/patches/collateral-evolutions/network/66-uapi-changes/include_linux_rfkill_backport.h
new file mode 100644
index 00000000..f5d69d4f
--- /dev/null
+++ b/patches/collateral-evolutions/network/66-uapi-changes/include_linux_rfkill_backport.h
@@ -0,0 +1,11 @@
+--- a/include/linux/rfkill_backport.h
++++ b/include/linux/rfkill_backport.h
+@@ -18,7 +18,7 @@
+ #ifndef __RFKILL_H
+ #define __RFKILL_H
+
+-#include <uapi/linux/rfkill.h>
++#include <uapi/linux/rfkill_backport.h>
+
+ /* don't allow anyone to use these in the kernel */
+ enum rfkill_user_states {
diff --git a/patches/collateral-evolutions/network/67-fix-section-mismatch.patch b/patches/collateral-evolutions/network/67-fix-section-mismatch/drivers_net_wireless_ath_ath5k_led.c
index 15126b6f..15126b6f 100644
--- a/patches/collateral-evolutions/network/67-fix-section-mismatch.patch
+++ b/patches/collateral-evolutions/network/67-fix-section-mismatch/drivers_net_wireless_ath_ath5k_led.c
diff --git a/patches/collateral-evolutions/network/67-ipv6-dev-list/INFO b/patches/collateral-evolutions/network/67-ipv6-dev-list/INFO
new file mode 100644
index 00000000..6f9d6193
--- /dev/null
+++ b/patches/collateral-evolutions/network/67-ipv6-dev-list/INFO
@@ -0,0 +1,8 @@
+This backports:
+
+commit 502a2ffd7376ae27cfde6172257db0ff9d8cfec2
+Author: stephen hemminger <shemminger@vyatta.com>
+Date: Wed Mar 17 20:31:13 2010 +0000
+
+ ipv6: convert idev_list to list macros
+
diff --git a/patches/collateral-evolutions/network/67-ipv6-dev-list.patch b/patches/collateral-evolutions/network/67-ipv6-dev-list/drivers_net_wireless_iwlwifi_mvm_d3.c
index 6c816271..7c24bee9 100644
--- a/patches/collateral-evolutions/network/67-ipv6-dev-list.patch
+++ b/patches/collateral-evolutions/network/67-ipv6-dev-list/drivers_net_wireless_iwlwifi_mvm_d3.c
@@ -1,14 +1,6 @@
-This backports:
-
-commit 502a2ffd7376ae27cfde6172257db0ff9d8cfec2
-Author: stephen hemminger <shemminger@vyatta.com>
-Date: Wed Mar 17 20:31:13 2010 +0000
-
- ipv6: convert idev_list to list macros
-
--- a/drivers/net/wireless/iwlwifi/mvm/d3.c
+++ b/drivers/net/wireless/iwlwifi/mvm/d3.c
-@@ -101,7 +101,11 @@ void iwl_mvm_ipv6_addr_change(struct iee
+@@ -101,7 +101,11 @@
int idx = 0;
read_lock_bh(&idev->lock);
diff --git a/patches/collateral-evolutions/network/69-wowlan-no-socket/INFO b/patches/collateral-evolutions/network/69-wowlan-no-socket/INFO
new file mode 100644
index 00000000..3fa37c2f
--- /dev/null
+++ b/patches/collateral-evolutions/network/69-wowlan-no-socket/INFO
@@ -0,0 +1,2 @@
+__sock_create() is not available on kernel version < 2.6.37.
+
diff --git a/patches/collateral-evolutions/network/69-wowlan-no-socket.patch b/patches/collateral-evolutions/network/69-wowlan-no-socket/net_wireless_nl80211.c
index 225043e2..cbe82408 100644
--- a/patches/collateral-evolutions/network/69-wowlan-no-socket.patch
+++ b/patches/collateral-evolutions/network/69-wowlan-no-socket/net_wireless_nl80211.c
@@ -1,8 +1,6 @@
-__sock_create() is not available on kernel version < 2.6.37.
-
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -7728,7 +7728,7 @@ static int nl80211_parse_wowlan_tcp(stru
+@@ -7728,7 +7728,7 @@
port = nla_get_u16(tb[NL80211_WOWLAN_TCP_SRC_PORT]);
else
port = 0;
diff --git a/patches/collateral-evolutions/network/70-umode_t-api-change.patch b/patches/collateral-evolutions/network/70-umode_t-api-change.patch
deleted file mode 100644
index dd6ec686..00000000
--- a/patches/collateral-evolutions/network/70-umode_t-api-change.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/debug.c
-+++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -1217,7 +1217,11 @@ static const struct file_operations fops
-
- static struct dentry *create_buf_file_handler(const char *filename,
- struct dentry *parent,
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- umode_t mode,
-+#else
-+ int mode,
-+#endif
- struct rchan_buf *buf,
- int *is_global)
- {
---- a/drivers/gpu/drm/drm_sysfs.c
-+++ b/drivers/gpu/drm/drm_sysfs.c
-@@ -72,7 +72,11 @@ static int drm_class_resume(struct devic
- return 0;
- }
-
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- static char *drm_devnode(struct device *dev, umode_t *mode)
-+#else
-+static char *drm_devnode(struct device *dev, mode_t *mode)
-+#endif
- {
- return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev));
- }
diff --git a/patches/collateral-evolutions/network/70-umode_t-api-change/drivers_gpu_drm_drm_sysfs.c b/patches/collateral-evolutions/network/70-umode_t-api-change/drivers_gpu_drm_drm_sysfs.c
new file mode 100644
index 00000000..9321ed76
--- /dev/null
+++ b/patches/collateral-evolutions/network/70-umode_t-api-change/drivers_gpu_drm_drm_sysfs.c
@@ -0,0 +1,14 @@
+--- a/drivers/gpu/drm/drm_sysfs.c
++++ b/drivers/gpu/drm/drm_sysfs.c
+@@ -72,7 +72,11 @@
+ return 0;
+ }
+
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ static char *drm_devnode(struct device *dev, umode_t *mode)
++#else
++static char *drm_devnode(struct device *dev, mode_t *mode)
++#endif
+ {
+ return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev));
+ }
diff --git a/patches/collateral-evolutions/network/70-umode_t-api-change/drivers_net_wireless_ath_ath9k_debug.c b/patches/collateral-evolutions/network/70-umode_t-api-change/drivers_net_wireless_ath_ath9k_debug.c
new file mode 100644
index 00000000..77772784
--- /dev/null
+++ b/patches/collateral-evolutions/network/70-umode_t-api-change/drivers_net_wireless_ath_ath9k_debug.c
@@ -0,0 +1,14 @@
+--- a/drivers/net/wireless/ath/ath9k/debug.c
++++ b/drivers/net/wireless/ath/ath9k/debug.c
+@@ -1217,7 +1217,11 @@
+
+ static struct dentry *create_buf_file_handler(const char *filename,
+ struct dentry *parent,
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+ umode_t mode,
++#else
++ int mode,
++#endif
+ struct rchan_buf *buf,
+ int *is_global)
+ {
diff --git a/patches/collateral-evolutions/network/71-bin_attribute-api-change.patch b/patches/collateral-evolutions/network/71-bin_attribute-api-change/drivers_net_wireless_ti_wlcore_main.c
index 24256608..16526737 100644
--- a/patches/collateral-evolutions/network/71-bin_attribute-api-change.patch
+++ b/patches/collateral-evolutions/network/71-bin_attribute-api-change/drivers_net_wireless_ti_wlcore_main.c
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -5518,7 +5518,11 @@ static ssize_t wl1271_sysfs_show_hw_pg_v
+@@ -5518,7 +5518,11 @@
static DEVICE_ATTR(hw_pg_ver, S_IRUGO,
wl1271_sysfs_show_hw_pg_ver, NULL);
diff --git a/patches/collateral-evolutions/network/99-change-makefiles.patch b/patches/collateral-evolutions/network/99-change-makefiles.patch
deleted file mode 100644
index 699799a9..00000000
--- a/patches/collateral-evolutions/network/99-change-makefiles.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-
-This patch removes all drivers we do not support
-or do not want to support. This lets us build
-only the wireless stuff.
-
---- a/drivers/misc/eeprom/Makefile
-+++ b/drivers/misc/eeprom/Makefile
-@@ -1,7 +1 @@
--obj-$(CONFIG_EEPROM_AT24) += at24.o
--obj-$(CONFIG_EEPROM_AT25) += at25.o
--obj-$(CONFIG_EEPROM_LEGACY) += eeprom.o
--obj-$(CONFIG_EEPROM_MAX6875) += max6875.o
- obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
--obj-$(CONFIG_EEPROM_93XX46) += eeprom_93xx46.o
--obj-$(CONFIG_EEPROM_DIGSY_MTC_CFG) += digsy_mtc_eeprom.o
---- a/drivers/net/usb/Makefile
-+++ b/drivers/net/usb/Makefile
-@@ -2,35 +2,7 @@
- # Makefile for USB Network drivers
- #
-
--obj-$(CONFIG_USB_CATC) += catc.o
--obj-$(CONFIG_USB_KAWETH) += kaweth.o
--obj-$(CONFIG_USB_PEGASUS) += pegasus.o
--obj-$(CONFIG_USB_RTL8150) += rtl8150.o
--obj-$(CONFIG_USB_HSO) += hso.o
--obj-$(CONFIG_USB_NET_AX8817X) += asix.o
--asix-y := asix_devices.o asix_common.o ax88172a.o
--obj-$(CONFIG_USB_NET_AX88179_178A) += ax88179_178a.o
- obj-$(CONFIG_USB_NET_COMPAT_CDCETHER) += cdc_ether.o
--obj-$(CONFIG_USB_NET_CDC_EEM) += cdc_eem.o
--obj-$(CONFIG_USB_NET_DM9601) += dm9601.o
--obj-$(CONFIG_USB_NET_SMSC75XX) += smsc75xx.o
--obj-$(CONFIG_USB_NET_SMSC95XX) += smsc95xx.o
--obj-$(CONFIG_USB_NET_GL620A) += gl620a.o
--obj-$(CONFIG_USB_NET_NET1080) += net1080.o
--obj-$(CONFIG_USB_NET_PLUSB) += plusb.o
- obj-$(CONFIG_USB_NET_COMPAT_RNDIS_HOST) += rndis_host.o
--obj-$(CONFIG_USB_NET_CDC_SUBSET) += cdc_subset.o
--obj-$(CONFIG_USB_NET_ZAURUS) += zaurus.o
--obj-$(CONFIG_USB_NET_MCS7830) += mcs7830.o
- obj-$(CONFIG_USB_COMPAT_USBNET) += usbnet.o
--obj-$(CONFIG_USB_NET_INT51X1) += int51x1.o
--obj-$(CONFIG_USB_CDC_PHONET) += cdc-phonet.o
--obj-$(CONFIG_USB_NET_KALMIA) += kalmia.o
--obj-$(CONFIG_USB_IPHETH) += ipheth.o
--obj-$(CONFIG_USB_SIERRA_NET) += sierra_net.o
--obj-$(CONFIG_USB_NET_CX82310_ETH) += cx82310_eth.o
--obj-$(CONFIG_USB_NET_CDC_NCM) += cdc_ncm.o
--obj-$(CONFIG_USB_VL600) += lg-vl600.o
--obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan.o
--obj-$(CONFIG_USB_NET_CDC_MBIM) += cdc_mbim.o
-
---- a/drivers/net/wireless/Makefile
-+++ b/drivers/net/wireless/Makefile
-@@ -7,18 +7,8 @@ obj-$(CONFIG_IPW2200) += ipw2x00/
-
- obj-$(CONFIG_HERMES) += orinoco/
-
--obj-$(CONFIG_AIRO) += airo.o
--obj-$(CONFIG_AIRO_CS) += airo_cs.o airo.o
--
--obj-$(CONFIG_ATMEL) += atmel.o
--obj-$(CONFIG_PCI_ATMEL) += atmel_pci.o
--obj-$(CONFIG_PCMCIA_ATMEL) += atmel_cs.o
--
- obj-$(CONFIG_AT76C50X_USB) += at76c50x-usb.o
-
--obj-$(CONFIG_PRISM54) += prism54/
--
--obj-$(CONFIG_HOSTAP) += hostap/
- obj-$(CONFIG_B43) += b43/
- obj-$(CONFIG_B43LEGACY) += b43legacy/
- obj-$(CONFIG_COMPAT_ZD1211RW) += zd1211rw/
-@@ -26,13 +16,8 @@ obj-$(CONFIG_RTL8180) += rtl818x/
- obj-$(CONFIG_RTL8187) += rtl818x/
- obj-$(CONFIG_RTLWIFI) += rtlwifi/
-
--# 16-bit wireless PCMCIA client drivers
--obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o
--obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs.o
--
- obj-$(CONFIG_USB_NET_COMPAT_RNDIS_WLAN) += rndis_wlan.o
-
--obj-$(CONFIG_USB_ZD1201) += zd1201.o
- obj-$(CONFIG_LIBERTAS) += libertas/
-
- obj-$(CONFIG_LIBERTAS_THINFIRM) += libertas_tf/
---- a/net/wireless/Makefile
-+++ b/net/wireless/Makefile
-@@ -4,11 +4,6 @@ obj-$(CONFIG_LIB80211_CRYPT_WEP) += lib8
- obj-$(CONFIG_LIB80211_CRYPT_CCMP) += lib80211_crypt_ccmp.o
- obj-$(CONFIG_LIB80211_CRYPT_TKIP) += lib80211_crypt_tkip.o
-
--obj-$(CONFIG_WEXT_CORE) += wext-core.o
--obj-$(CONFIG_WEXT_PROC) += wext-proc.o
--obj-$(CONFIG_WEXT_SPY) += wext-spy.o
--obj-$(CONFIG_WEXT_PRIV) += wext-priv.o
--
- cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o scan.o nl80211.o
- cfg80211-y += mlme.o ibss.o sme.o chan.o ethtool.o mesh.o ap.o
- cfg80211-$(CONFIG_COMPAT_CFG80211_DRIVER_API_TRACER) += trace.o
diff --git a/patches/collateral-evolutions/network/99-change-makefiles/INFO b/patches/collateral-evolutions/network/99-change-makefiles/INFO
new file mode 100644
index 00000000..48580ff4
--- /dev/null
+++ b/patches/collateral-evolutions/network/99-change-makefiles/INFO
@@ -0,0 +1,5 @@
+
+This patch removes all drivers we do not support
+or do not want to support. This lets us build
+only the wireless stuff.
+
diff --git a/patches/collateral-evolutions/network/99-change-makefiles/drivers_misc_eeprom_Makefile b/patches/collateral-evolutions/network/99-change-makefiles/drivers_misc_eeprom_Makefile
new file mode 100644
index 00000000..bbf7447b
--- /dev/null
+++ b/patches/collateral-evolutions/network/99-change-makefiles/drivers_misc_eeprom_Makefile
@@ -0,0 +1,10 @@
+--- a/drivers/misc/eeprom/Makefile
++++ b/drivers/misc/eeprom/Makefile
+@@ -1,7 +1,1 @@
+-obj-$(CONFIG_EEPROM_AT24) += at24.o
+-obj-$(CONFIG_EEPROM_AT25) += at25.o
+-obj-$(CONFIG_EEPROM_LEGACY) += eeprom.o
+-obj-$(CONFIG_EEPROM_MAX6875) += max6875.o
+ obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
+-obj-$(CONFIG_EEPROM_93XX46) += eeprom_93xx46.o
+-obj-$(CONFIG_EEPROM_DIGSY_MTC_CFG) += digsy_mtc_eeprom.o
diff --git a/patches/collateral-evolutions/network/99-change-makefiles/drivers_net_usb_Makefile b/patches/collateral-evolutions/network/99-change-makefiles/drivers_net_usb_Makefile
new file mode 100644
index 00000000..c83c1c0c
--- /dev/null
+++ b/patches/collateral-evolutions/network/99-change-makefiles/drivers_net_usb_Makefile
@@ -0,0 +1,38 @@
+--- a/drivers/net/usb/Makefile
++++ b/drivers/net/usb/Makefile
+@@ -2,35 +2,7 @@
+ # Makefile for USB Network drivers
+ #
+
+-obj-$(CONFIG_USB_CATC) += catc.o
+-obj-$(CONFIG_USB_KAWETH) += kaweth.o
+-obj-$(CONFIG_USB_PEGASUS) += pegasus.o
+-obj-$(CONFIG_USB_RTL8150) += rtl8150.o
+-obj-$(CONFIG_USB_HSO) += hso.o
+-obj-$(CONFIG_USB_NET_AX8817X) += asix.o
+-asix-y := asix_devices.o asix_common.o ax88172a.o
+-obj-$(CONFIG_USB_NET_AX88179_178A) += ax88179_178a.o
+ obj-$(CONFIG_USB_NET_COMPAT_CDCETHER) += cdc_ether.o
+-obj-$(CONFIG_USB_NET_CDC_EEM) += cdc_eem.o
+-obj-$(CONFIG_USB_NET_DM9601) += dm9601.o
+-obj-$(CONFIG_USB_NET_SMSC75XX) += smsc75xx.o
+-obj-$(CONFIG_USB_NET_SMSC95XX) += smsc95xx.o
+-obj-$(CONFIG_USB_NET_GL620A) += gl620a.o
+-obj-$(CONFIG_USB_NET_NET1080) += net1080.o
+-obj-$(CONFIG_USB_NET_PLUSB) += plusb.o
+ obj-$(CONFIG_USB_NET_COMPAT_RNDIS_HOST) += rndis_host.o
+-obj-$(CONFIG_USB_NET_CDC_SUBSET) += cdc_subset.o
+-obj-$(CONFIG_USB_NET_ZAURUS) += zaurus.o
+-obj-$(CONFIG_USB_NET_MCS7830) += mcs7830.o
+ obj-$(CONFIG_USB_COMPAT_USBNET) += usbnet.o
+-obj-$(CONFIG_USB_NET_INT51X1) += int51x1.o
+-obj-$(CONFIG_USB_CDC_PHONET) += cdc-phonet.o
+-obj-$(CONFIG_USB_NET_KALMIA) += kalmia.o
+-obj-$(CONFIG_USB_IPHETH) += ipheth.o
+-obj-$(CONFIG_USB_SIERRA_NET) += sierra_net.o
+-obj-$(CONFIG_USB_NET_CX82310_ETH) += cx82310_eth.o
+-obj-$(CONFIG_USB_NET_CDC_NCM) += cdc_ncm.o
+-obj-$(CONFIG_USB_VL600) += lg-vl600.o
+-obj-$(CONFIG_USB_NET_QMI_WWAN) += qmi_wwan.o
+-obj-$(CONFIG_USB_NET_CDC_MBIM) += cdc_mbim.o
+
diff --git a/patches/collateral-evolutions/network/99-change-makefiles/drivers_net_wireless_Makefile b/patches/collateral-evolutions/network/99-change-makefiles/drivers_net_wireless_Makefile
new file mode 100644
index 00000000..98b2346a
--- /dev/null
+++ b/patches/collateral-evolutions/network/99-change-makefiles/drivers_net_wireless_Makefile
@@ -0,0 +1,35 @@
+--- a/drivers/net/wireless/Makefile
++++ b/drivers/net/wireless/Makefile
+@@ -7,18 +7,8 @@
+
+ obj-$(CONFIG_HERMES) += orinoco/
+
+-obj-$(CONFIG_AIRO) += airo.o
+-obj-$(CONFIG_AIRO_CS) += airo_cs.o airo.o
+-
+-obj-$(CONFIG_ATMEL) += atmel.o
+-obj-$(CONFIG_PCI_ATMEL) += atmel_pci.o
+-obj-$(CONFIG_PCMCIA_ATMEL) += atmel_cs.o
+-
+ obj-$(CONFIG_AT76C50X_USB) += at76c50x-usb.o
+
+-obj-$(CONFIG_PRISM54) += prism54/
+-
+-obj-$(CONFIG_HOSTAP) += hostap/
+ obj-$(CONFIG_B43) += b43/
+ obj-$(CONFIG_B43LEGACY) += b43legacy/
+ obj-$(CONFIG_COMPAT_ZD1211RW) += zd1211rw/
+@@ -26,13 +16,8 @@
+ obj-$(CONFIG_RTL8187) += rtl818x/
+ obj-$(CONFIG_RTLWIFI) += rtlwifi/
+
+-# 16-bit wireless PCMCIA client drivers
+-obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o
+-obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs.o
+-
+ obj-$(CONFIG_USB_NET_COMPAT_RNDIS_WLAN) += rndis_wlan.o
+
+-obj-$(CONFIG_USB_ZD1201) += zd1201.o
+ obj-$(CONFIG_LIBERTAS) += libertas/
+
+ obj-$(CONFIG_LIBERTAS_THINFIRM) += libertas_tf/
diff --git a/patches/collateral-evolutions/network/99-change-makefiles/net_wireless_Makefile b/patches/collateral-evolutions/network/99-change-makefiles/net_wireless_Makefile
new file mode 100644
index 00000000..a058541c
--- /dev/null
+++ b/patches/collateral-evolutions/network/99-change-makefiles/net_wireless_Makefile
@@ -0,0 +1,14 @@
+--- a/net/wireless/Makefile
++++ b/net/wireless/Makefile
+@@ -4,11 +4,6 @@
+ obj-$(CONFIG_LIB80211_CRYPT_CCMP) += lib80211_crypt_ccmp.o
+ obj-$(CONFIG_LIB80211_CRYPT_TKIP) += lib80211_crypt_tkip.o
+
+-obj-$(CONFIG_WEXT_CORE) += wext-core.o
+-obj-$(CONFIG_WEXT_PROC) += wext-proc.o
+-obj-$(CONFIG_WEXT_SPY) += wext-spy.o
+-obj-$(CONFIG_WEXT_PRIV) += wext-priv.o
+-
+ cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o scan.o nl80211.o
+ cfg80211-y += mlme.o ibss.o sme.o chan.o ethtool.o mesh.o ap.o
+ cfg80211-$(CONFIG_COMPAT_CFG80211_DRIVER_API_TRACER) += trace.o