diff options
| author | Alexandre Oliva <lxoliva@fsfla.org> | 2011-12-12 12:37:29 +0000 |
|---|---|---|
| committer | Alexandre Oliva <lxoliva@fsfla.org> | 2011-12-12 12:37:29 +0000 |
| commit | 7a91eba8d3dc52e17d6dde65fd3b0056951007ee (patch) | |
| tree | 30f2f5dfa39487f8104cccd2d1db92ee586ebcb5 /freed-ora/current/f15 | |
| parent | b2ade11d23e52d5a48a71aafc5158f0e25f25ecf (diff) | |
| download | linux-libre-raptor-7a91eba8d3dc52e17d6dde65fd3b0056951007ee.tar.gz linux-libre-raptor-7a91eba8d3dc52e17d6dde65fd3b0056951007ee.zip | |
2.6.41.5-1.fc15
Diffstat (limited to 'freed-ora/current/f15')
| -rw-r--r-- | freed-ora/current/f15/brcm80211.patch | 247 | ||||
| -rw-r--r-- | freed-ora/current/f15/config-arm-omap-generic | 1 | ||||
| -rw-r--r-- | freed-ora/current/f15/config-arm-tegra | 1 | ||||
| -rw-r--r-- | freed-ora/current/f15/config-generic | 5 | ||||
| -rw-r--r-- | freed-ora/current/f15/drm-intel-make-lvds-work.patch | 18 | ||||
| -rw-r--r-- | freed-ora/current/f15/elantech.patch | 64 | ||||
| -rw-r--r-- | freed-ora/current/f15/kernel.spec | 71 | ||||
| -rw-r--r-- | freed-ora/current/f15/mac80211_offchannel_rework_revert.patch | 594 | ||||
| -rw-r--r-- | freed-ora/current/f15/net-sky2-88e8059-fix-link-speed.patch | 42 | ||||
| -rw-r--r-- | freed-ora/current/f15/patch-libre-3.1.4.bz2.sign | 7 | ||||
| -rw-r--r-- | freed-ora/current/f15/patch-libre-3.1.5.bz2.sign | 7 | ||||
| -rw-r--r-- | freed-ora/current/f15/pci-Rework-ASPM-disable-code.patch | 287 | ||||
| -rw-r--r-- | freed-ora/current/f15/quite-apm.patch | 2 | ||||
| -rw-r--r-- | freed-ora/current/f15/rtlwifi-fix-lps_lock-deadlock.patch | 224 | ||||
| -rw-r--r-- | freed-ora/current/f15/sources | 2 |
15 files changed, 1538 insertions, 34 deletions
diff --git a/freed-ora/current/f15/brcm80211.patch b/freed-ora/current/f15/brcm80211.patch index e9b206b10..2d11112d3 100644 --- a/freed-ora/current/f15/brcm80211.patch +++ b/freed-ora/current/f15/brcm80211.patch @@ -96995,3 +96995,250 @@ diff -up linux-3.1.x86_64/drivers/net/wireless/Makefile.orig linux-3.1.x86_64/dr + +obj-$(CONFIG_BRCMFMAC) += brcm80211/ +obj-$(CONFIG_BRCMSMAC) += brcm80211/ +diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig +index 06c9081..e2c3532 100644 +--- a/drivers/staging/Kconfig ++++ b/drivers/staging/Kconfig +@@ -44,8 +44,6 @@ source "drivers/staging/wlan-ng/Kconfig" + + source "drivers/staging/echo/Kconfig" + +-source "drivers/staging/brcm80211/Kconfig" +- + source "drivers/staging/comedi/Kconfig" + + source "drivers/staging/olpc_dcon/Kconfig" +diff --git a/drivers/staging/brcm80211/Kconfig b/drivers/staging/brcm80211/Kconfig +deleted file mode 100644 +index 379cf16..0000000 +--- a/drivers/staging/brcm80211/Kconfig ++++ /dev/null +@@ -1,40 +0,0 @@ +-config BRCMUTIL +- tristate +- default n +- +-config BRCMSMAC +- tristate "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver" +- default n +- depends on PCI +- depends on WLAN && MAC80211 +- depends on X86 || MIPS +- select BRCMUTIL +- select FW_LOADER +- select CRC_CCITT +- ---help--- +- This module adds support for PCIe wireless adapters based on Broadcom +- IEEE802.11n SoftMAC chipsets. If you choose to build a module, it'll +- be called brcmsmac.ko. +- +-config BRCMFMAC +- tristate "Broadcom IEEE802.11n embedded FullMAC WLAN driver" +- default n +- depends on MMC +- depends on WLAN && CFG80211 +- depends on X86 || MIPS +- select BRCMUTIL +- select FW_LOADER +- select WIRELESS_EXT +- select WEXT_PRIV +- ---help--- +- This module adds support for embedded wireless adapters based on +- Broadcom IEEE802.11n FullMAC chipsets. This driver uses the kernel's +- wireless extensions subsystem. If you choose to build a module, +- it'll be called brcmfmac.ko. +- +-config BRCMDBG +- bool "Broadcom driver debug functions" +- default n +- depends on BRCMSMAC || BRCMFMAC +- ---help--- +- Selecting this enables additional code for debug purposes. +diff --git a/drivers/staging/brcm80211/Makefile b/drivers/staging/brcm80211/Makefile +deleted file mode 100644 +index 8b01f5e..0000000 +--- a/drivers/staging/brcm80211/Makefile ++++ /dev/null +@@ -1,24 +0,0 @@ +-# +-# Makefile fragment for Broadcom 802.11n Networking Device Driver +-# +-# Copyright (c) 2010 Broadcom Corporation +-# +-# Permission to use, copy, modify, and/or distribute this software for any +-# purpose with or without fee is hereby granted, provided that the above +-# copyright notice and this permission notice appear in all copies. +-# +-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +-# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +-# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +-# common flags +-subdir-ccflags-y := -DBCMDMA32 +-subdir-ccflags-$(CONFIG_BRCMDBG) += -DBCMDBG +- +-obj-$(CONFIG_BRCMUTIL) += brcmutil/ +-obj-$(CONFIG_BRCMFMAC) += brcmfmac/ +-obj-$(CONFIG_BRCMSMAC) += brcmsmac/ +diff --git a/drivers/staging/brcm80211/brcmfmac/Makefile b/drivers/staging/brcm80211/brcmfmac/Makefile +deleted file mode 100644 +index da3c805..0000000 +--- a/drivers/staging/brcm80211/brcmfmac/Makefile ++++ /dev/null +@@ -1,39 +0,0 @@ +-# +-# Makefile fragment for Broadcom 802.11n Networking Device Driver +-# +-# Copyright (c) 2010 Broadcom Corporation +-# +-# Permission to use, copy, modify, and/or distribute this software for any +-# purpose with or without fee is hereby granted, provided that the above +-# copyright notice and this permission notice appear in all copies. +-# +-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +-# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +-# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +-ccflags-y := \ +- -DBRCMF_FIRSTREAD=64 \ +- -DBRCMF_SDALIGN=64 \ +- -DMAX_HDR_READ=64 +- +-ccflags-$(CONFIG_BRCMDBG) += -DSHOW_EVENTS +- +-ccflags-y += \ +- -Idrivers/staging/brcm80211/brcmfmac \ +- -Idrivers/staging/brcm80211/include +- +-DHDOFILES = \ +- wl_cfg80211.o \ +- dhd_cdc.o \ +- dhd_common.o \ +- dhd_sdio.o \ +- dhd_linux.o \ +- bcmsdh.o \ +- bcmsdh_sdmmc.o +- +-obj-$(CONFIG_BRCMFMAC) += brcmfmac.o +-brcmfmac-objs += $(DHDOFILES) +diff --git a/drivers/staging/brcm80211/brcmsmac/Makefile b/drivers/staging/brcm80211/brcmsmac/Makefile +deleted file mode 100644 +index 1ea3e0c..0000000 +--- a/drivers/staging/brcm80211/brcmsmac/Makefile ++++ /dev/null +@@ -1,58 +0,0 @@ +-# +-# Makefile fragment for Broadcom 802.11n Networking Device Driver +-# +-# Copyright (c) 2010 Broadcom Corporation +-# +-# Permission to use, copy, modify, and/or distribute this software for any +-# purpose with or without fee is hereby granted, provided that the above +-# copyright notice and this permission notice appear in all copies. +-# +-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +-# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +-# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +-ccflags-y := \ +- -DWLC_HIGH \ +- -DWLC_LOW \ +- -DSTA \ +- -DWME \ +- -DWL11N \ +- -DDBAND \ +- -DBCMNVRAMR \ +- -Idrivers/staging/brcm80211/brcmsmac \ +- -Idrivers/staging/brcm80211/brcmsmac/phy \ +- -Idrivers/staging/brcm80211/include +- +-BRCMSMAC_OFILES := \ +- mac80211_if.o \ +- ucode_loader.o \ +- alloc.o \ +- ampdu.o \ +- antsel.o \ +- bmac.o \ +- channel.o \ +- main.o \ +- phy_shim.o \ +- pmu.o \ +- rate.o \ +- stf.o \ +- aiutils.o \ +- phy/phy_cmn.o \ +- phy/phy_lcn.o \ +- phy/phy_n.o \ +- phy/phytbl_lcn.o \ +- phy/phytbl_n.o \ +- phy/phy_qmath.o \ +- otp.o \ +- srom.o \ +- dma.o \ +- nicpci.o +- +-MODULEPFX := brcmsmac +- +-obj-$(CONFIG_BRCMSMAC) += $(MODULEPFX).o +-$(MODULEPFX)-objs = $(BRCMSMAC_OFILES) +diff --git a/drivers/staging/brcm80211/brcmutil/Makefile b/drivers/staging/brcm80211/brcmutil/Makefile +deleted file mode 100644 +index 6403423..0000000 +--- a/drivers/staging/brcm80211/brcmutil/Makefile ++++ /dev/null +@@ -1,29 +0,0 @@ +-# +-# Makefile fragment for Broadcom 802.11n Networking Device Driver Utilities +-# +-# Copyright (c) 2011 Broadcom Corporation +-# +-# Permission to use, copy, modify, and/or distribute this software for any +-# purpose with or without fee is hereby granted, provided that the above +-# copyright notice and this permission notice appear in all copies. +-# +-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +-# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +-# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +-# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +-ccflags-y := \ +- -Idrivers/staging/brcm80211/brcmutil \ +- -Idrivers/staging/brcm80211/include +- +-BRCMUTIL_OFILES := \ +- utils.o \ +- wifi.o +- +-MODULEPFX := brcmutil +- +-obj-$(CONFIG_BRCMUTIL) += $(MODULEPFX).o +-$(MODULEPFX)-objs = $(BRCMUTIL_OFILES) +-- +diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile +index f3c5e33..f2c2209 100644 +--- a/drivers/staging/Makefile ++++ b/drivers/staging/Makefile +@@ -14,8 +14,6 @@ obj-$(CONFIG_USBIP_CORE) += usbip/ + obj-$(CONFIG_W35UND) += winbond/ + obj-$(CONFIG_PRISM2_USB) += wlan-ng/ + obj-$(CONFIG_ECHO) += echo/ +-obj-$(CONFIG_BRCMSMAC) += brcm80211/ +-obj-$(CONFIG_BRCMFMAC) += brcm80211/ + obj-$(CONFIG_COMEDI) += comedi/ + obj-$(CONFIG_FB_OLPC_DCON) += olpc_dcon/ + obj-$(CONFIG_ASUS_OLED) += asus_oled/ diff --git a/freed-ora/current/f15/config-arm-omap-generic b/freed-ora/current/f15/config-arm-omap-generic index 16e665329..657f548a2 100644 --- a/freed-ora/current/f15/config-arm-omap-generic +++ b/freed-ora/current/f15/config-arm-omap-generic @@ -121,6 +121,7 @@ CONFIG_ARM_ERRATA_430973=y # CONFIG_ARM_ERRATA_742230 is not set # CONFIG_ARM_ERRATA_742231 is not set CONFIG_PL310_ERRATA_588369=y +CONFIG_PL310_ERRATA_769419=y CONFIG_ARM_ERRATA_720789=y # CONFIG_ARM_ERRATA_743622 is not set # CONFIG_ARM_ERRATA_751472 is not set diff --git a/freed-ora/current/f15/config-arm-tegra b/freed-ora/current/f15/config-arm-tegra index 910b39f81..b131978d2 100644 --- a/freed-ora/current/f15/config-arm-tegra +++ b/freed-ora/current/f15/config-arm-tegra @@ -34,6 +34,7 @@ CONFIG_ARM_ERRATA_430973=y CONFIG_ARM_ERRATA_742230=y # CONFIG_ARM_ERRATA_742231 is not set CONFIG_PL310_ERRATA_588369=y +CONFIG_PL310_ERRATA_769419=y CONFIG_ARM_ERRATA_720789=y # CONFIG_PL310_ERRATA_727915 is not set # CONFIG_ARM_ERRATA_743622 is not set diff --git a/freed-ora/current/f15/config-generic b/freed-ora/current/f15/config-generic index 5b4f10997..a1feb6e3b 100644 --- a/freed-ora/current/f15/config-generic +++ b/freed-ora/current/f15/config-generic @@ -3110,7 +3110,8 @@ CONFIG_USB_STORAGE_REALTEK=m CONFIG_REALTEK_AUTOPM=y CONFIG_USB_STORAGE_ENE_UB6250=m # CONFIG_USB_LIBUSUAL is not set -CONFIG_USB_UAS=m +# uas is broken (#717633, #744099) +# CONFIG_USB_UAS is not set # @@ -3779,7 +3780,7 @@ CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_INFO=y CONFIG_FRAME_POINTER=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set # CONFIG_DEBUG_DRIVER is not set CONFIG_HEADERS_CHECK=y # CONFIG_RCU_TORTURE_TEST is not set diff --git a/freed-ora/current/f15/drm-intel-make-lvds-work.patch b/freed-ora/current/f15/drm-intel-make-lvds-work.patch deleted file mode 100644 index 89f4e2d48..000000000 --- a/freed-ora/current/f15/drm-intel-make-lvds-work.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/drivers/gpu/drm/i915/intel_display.c -+++ b/drivers/gpu/drm/i915/intel_display.c -@@ -5821,7 +5821,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, - struct intel_load_detect_pipe *old) - { - struct drm_encoder *encoder = &intel_encoder->base; -- struct drm_device *dev = encoder->dev; - struct drm_crtc *crtc = encoder->crtc; - struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; - struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; -@@ -5832,7 +5831,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, - - if (old->load_detect_temp) { - connector->encoder = NULL; -- drm_helper_disable_unused_functions(dev); - - if (old->release_fb) - old->release_fb->funcs->destroy(old->release_fb); diff --git a/freed-ora/current/f15/elantech.patch b/freed-ora/current/f15/elantech.patch index 255efd2b6..fa7c67fec 100644 --- a/freed-ora/current/f15/elantech.patch +++ b/freed-ora/current/f15/elantech.patch @@ -2114,3 +2114,67 @@ index c2d91eb..25290b3 100644 -- 1.7.6.4 +From 3940d6185a982a970ff562e085caccbdd62f40bb Mon Sep 17 00:00:00 2001 +From: JJ Ding <jj_ding@emc.com.tw> +Date: Tue, 8 Nov 2011 22:13:14 -0800 +Subject: [PATCH] Input: elantech - adjust hw_version detection logic +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This patch fixes some v3 hardware (fw_version: 0x150500) wrongly detected +as v2 hardware. + +Reported-by: Marc Dietrich <marvin24@gmx.de> +Signed-off-by: JJ Ding <jj_ding@emc.com.tw> +Tested-By: Marc Dietrich <marvin24@gmx.de> +Acked-by: Éric Piel <eric.piel@tremplin-utc.net> +Signed-off-by: Dmitry Torokhov <dtor@mail.ru> +--- + drivers/input/mouse/elantech.c | 26 ++++++++++++++++++-------- + 1 files changed, 18 insertions(+), 8 deletions(-) + +diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c +index 09b93b1..e2a9867 100644 +--- a/drivers/input/mouse/elantech.c ++++ b/drivers/input/mouse/elantech.c +@@ -1210,18 +1210,28 @@ static int elantech_reconnect(struct psmouse *psmouse) + */ + static int elantech_set_properties(struct elantech_data *etd) + { ++ /* This represents the version of IC body. */ + int ver = (etd->fw_version & 0x0f0000) >> 16; + ++ /* Early version of Elan touchpads doesn't obey the rule. */ + if (etd->fw_version < 0x020030 || etd->fw_version == 0x020600) + etd->hw_version = 1; +- else if (etd->fw_version < 0x150600) +- etd->hw_version = 2; +- else if (ver == 5) +- etd->hw_version = 3; +- else if (ver == 6) +- etd->hw_version = 4; +- else +- return -1; ++ else { ++ switch (ver) { ++ case 2: ++ case 4: ++ etd->hw_version = 2; ++ break; ++ case 5: ++ etd->hw_version = 3; ++ break; ++ case 6: ++ etd->hw_version = 4; ++ break; ++ default: ++ return -1; ++ } ++ } + + /* + * Turn on packet checking by default. +-- +1.7.7.3 + diff --git a/freed-ora/current/f15/kernel.spec b/freed-ora/current/f15/kernel.spec index 4d35aab2b..eed6133c3 100644 --- a/freed-ora/current/f15/kernel.spec +++ b/freed-ora/current/f15/kernel.spec @@ -65,7 +65,7 @@ Summary: The Linux kernel #define libres . # Do we have a -stable update to apply? -%define stable_update 4 +%define stable_update 5 # Is it a -stable RC? %define stable_rc 0 # Set rpm version accordingly @@ -626,8 +626,6 @@ Patch1500: fix_xen_guest_on_old_EC2.patch Patch1810: drm-nouveau-updates.patch # intel drm is all merged upstream Patch1824: drm-intel-next.patch -# make sure the lvds comes back on lid open -Patch1825: drm-intel-make-lvds-work.patch # hush the i915 fbc noise Patch1826: drm-i915-fbc-stfu.patch # rhbz#729882, https://bugs.freedesktop.org/attachment.cgi?id=49069 @@ -713,6 +711,17 @@ Patch21091: bcma-brcmsmac-compat.patch Patch21100: cciss-fix-irqf-shared.patch Patch21101: hpsa-add-irqf-shared.patch +#rhbz 755154 +Patch21200: rtlwifi-fix-lps_lock-deadlock.patch + +#rhbz 731365 +Patch21220: mac80211_offchannel_rework_revert.patch + +Patch21225: pci-Rework-ASPM-disable-code.patch + +#rhbz #757839 +Patch21230: net-sky2-88e8059-fix-link-speed.patch + %endif BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root @@ -1162,7 +1171,7 @@ ApplyPatch linux-2.6-i386-nx-emulation.patch ApplyPatch jbd-jbd2-validate-sb-s_first-in-journal_get_superblo.patch # xfs -ApplyPatch xfs-Fix-possible-memory-corruption-in-xfs_readlink.patch +#ApplyPatch xfs-Fix-possible-memory-corruption-in-xfs_readlink.patch # btrfs @@ -1246,7 +1255,6 @@ ApplyOptionalPatch drm-nouveau-updates.patch # Intel DRM ApplyOptionalPatch drm-intel-next.patch -ApplyPatch drm-intel-make-lvds-work.patch ApplyPatch drm-i915-fbc-stfu.patch ApplyPatch drm-i915-sdvo-lvds-is-digital.patch @@ -1320,6 +1328,17 @@ ApplyPatch bcma-brcmsmac-compat.patch ApplyPatch cciss-fix-irqf-shared.patch ApplyPatch hpsa-add-irqf-shared.patch +#rhbz 755154 +#ApplyPatch rtlwifi-fix-lps_lock-deadlock.patch + +#rhbz 731365 +ApplyPatch mac80211_offchannel_rework_revert.patch + +ApplyPatch pci-Rework-ASPM-disable-code.patch + +#rhbz #757839 +ApplyPatch net-sky2-88e8059-fix-link-speed.patch + # END OF PATCH APPLICATIONS %endif @@ -1937,12 +1956,54 @@ fi # and build. %changelog +* Sun Dec 11 2011 Alexandre Oliva <lxoliva@fsfla.org> -libre +- Use patch-3.1-libre-3.1.5-libre as patch-libre-3.1.5. + +* Fri Dec 09 2011 Josh Boyer <jwboyer@redhat.com> 2.6.41.5-1 +- Linux 3.1.5 (Fedora 2.6.41.5) + +* Thu Dec 08 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.41.5-0.rc2.1 +- Linux 3.1.5-rc2 (Fedora 2.6.41.5-rc2) +- Fix wrong link speed on some sky2 network adapters (rhbz #757839) + +* Wed Dec 07 2011 Chuck Ebbert <cebbert@redhat.com> +- Linux 3.1.5-rc1 (Fedora 2.6.41.5-rc1) +- Comment out merged patches: + xfs-Fix-possible-memory-corruption-in-xfs_readlink.patch + rtlwifi-fix-lps_lock-deadlock.patch + +* Tue Dec 06 2011 Chuck Ebbert <cebbert@redhat.com> +- Disable uas until someone can fix it (rhbz #717633) + +* Tue Dec 06 2011 Josh Boyer <jwboyer@redhat.com> +- Add reworked pci ASPM patch from Matthew Garrett + +* Mon Dec 05 2011 Josh Boyer <jwboyer@redhat.com> +- Only print the apm_cpu_idle message once (rhbz #760341) + +* Mon Dec 05 2011 Dave Jones <davej@redhat.com> +- Switch from -Os to -O2 + +* Thu Dec 01 2011 Josh Boyer <jwboyer@redhat.com> +- Apply patch to revert mac80211 scan optimizations (rhbz #731365) +- Disable the existing brcm80211 staging drivers (rhbz #759109) + +* Wed Nov 30 2011 Josh Boyer <jwboyer@redhat.com> +- Include commit 3940d6185 from JJ Ding in elantech.patch + +* Tue Nov 29 2011 Josh Boyer <jwboyer@redhat.com> +- Add patch to fix deadlock in rtlwifi (rhbz #755154) +- Drop drm-intel-make-lvds-work.patch (rhbz #731296) + * Tue Nov 29 2011 Alexandre Oliva <lxoliva@fsfla.org> -libre - Use patch-3.1-libre-3.1.4-libre as patch-libre-3.1.4. * Mon Nov 28 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.41.4-1 - Linux 3.1.4 (Fedora 2.6.41.4) +* Mon Nov 28 2011 Chuck Ebbert <cebbert@redhat.com> 3.1.4-1 +- Linux 3.1.4 + * Mon Nov 28 2011 Chuck Ebbert <cebbert@redhat.com> - Fix IRQ error preventing load of cciss module (rhbz#754907) diff --git a/freed-ora/current/f15/mac80211_offchannel_rework_revert.patch b/freed-ora/current/f15/mac80211_offchannel_rework_revert.patch new file mode 100644 index 000000000..859799714 --- /dev/null +++ b/freed-ora/current/f15/mac80211_offchannel_rework_revert.patch @@ -0,0 +1,594 @@ +diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h +index 9fab144..4f8cf7f 100644 +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -694,6 +694,8 @@ struct tpt_led_trigger { + * well be on the operating channel + * @SCAN_HW_SCANNING: The hardware is scanning for us, we have no way to + * determine if we are on the operating channel or not ++ * @SCAN_OFF_CHANNEL: We're off our operating channel for scanning, ++ * gets only set in conjunction with SCAN_SW_SCANNING + * @SCAN_COMPLETED: Set for our scan work function when the driver reported + * that the scan completed. + * @SCAN_ABORTED: Set for our scan work function when the driver reported +@@ -702,6 +704,7 @@ struct tpt_led_trigger { + enum { + SCAN_SW_SCANNING, + SCAN_HW_SCANNING, ++ SCAN_OFF_CHANNEL, + SCAN_COMPLETED, + SCAN_ABORTED, + }; +@@ -1197,14 +1200,10 @@ int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata); + void ieee80211_sched_scan_stopped_work(struct work_struct *work); + + /* off-channel helpers */ +-bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local); +-void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local, +- bool tell_ap); +-void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, +- bool offchannel_ps_enable); ++void ieee80211_offchannel_stop_beaconing(struct ieee80211_local *local); ++void ieee80211_offchannel_stop_station(struct ieee80211_local *local); + void ieee80211_offchannel_return(struct ieee80211_local *local, +- bool enable_beaconing, +- bool offchannel_ps_disable); ++ bool enable_beaconing); + void ieee80211_hw_roc_setup(struct ieee80211_local *local); + + /* interface handling */ +diff --git a/net/mac80211/main.c b/net/mac80211/main.c +index acb4423..2d607e5 100644 +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -92,47 +92,6 @@ static void ieee80211_reconfig_filter(struct work_struct *work) + ieee80211_configure_filter(local); + } + +-/* +- * Returns true if we are logically configured to be on +- * the operating channel AND the hardware-conf is currently +- * configured on the operating channel. Compares channel-type +- * as well. +- */ +-bool ieee80211_cfg_on_oper_channel(struct ieee80211_local *local) +-{ +- struct ieee80211_channel *chan, *scan_chan; +- enum nl80211_channel_type channel_type; +- +- /* This logic needs to match logic in ieee80211_hw_config */ +- if (local->scan_channel) { +- chan = local->scan_channel; +- /* If scanning on oper channel, use whatever channel-type +- * is currently in use. +- */ +- if (chan == local->oper_channel) +- channel_type = local->_oper_channel_type; +- else +- channel_type = NL80211_CHAN_NO_HT; +- } else if (local->tmp_channel) { +- chan = scan_chan = local->tmp_channel; +- channel_type = local->tmp_channel_type; +- } else { +- chan = local->oper_channel; +- channel_type = local->_oper_channel_type; +- } +- +- if (chan != local->oper_channel || +- channel_type != local->_oper_channel_type) +- return false; +- +- /* Check current hardware-config against oper_channel. */ +- if ((local->oper_channel != local->hw.conf.channel) || +- (local->_oper_channel_type != local->hw.conf.channel_type)) +- return false; +- +- return true; +-} +- + int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) + { + struct ieee80211_channel *chan, *scan_chan; +@@ -145,9 +104,6 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) + + scan_chan = local->scan_channel; + +- /* If this off-channel logic ever changes, ieee80211_on_oper_channel +- * may need to change as well. +- */ + offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL; + if (scan_chan) { + chan = scan_chan; +@@ -158,19 +114,17 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) + channel_type = local->_oper_channel_type; + else + channel_type = NL80211_CHAN_NO_HT; +- } else if (local->tmp_channel) { ++ local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; ++ } else if (local->tmp_channel && ++ local->oper_channel != local->tmp_channel) { + chan = scan_chan = local->tmp_channel; + channel_type = local->tmp_channel_type; ++ local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; + } else { + chan = local->oper_channel; + channel_type = local->_oper_channel_type; +- } +- +- if (chan != local->oper_channel || +- channel_type != local->_oper_channel_type) +- local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; +- else + local->hw.conf.flags &= ~IEEE80211_CONF_OFFCHANNEL; ++ } + + offchannel_flag ^= local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL; + +@@ -279,7 +233,7 @@ void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata, + + if (changed & BSS_CHANGED_BEACON_ENABLED) { + if (local->quiescing || !ieee80211_sdata_running(sdata) || +- test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state)) { ++ test_bit(SCAN_SW_SCANNING, &local->scanning)) { + sdata->vif.bss_conf.enable_beacon = false; + } else { + /* +diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c +index 13427b1..b4e5267 100644 +--- a/net/mac80211/offchannel.c ++++ b/net/mac80211/offchannel.c +@@ -17,14 +17,10 @@ + #include "driver-trace.h" + + /* +- * Tell our hardware to disable PS. +- * Optionally inform AP that we will go to sleep so that it will buffer +- * the frames while we are doing off-channel work. This is optional +- * because we *may* be doing work on-operating channel, and want our +- * hardware unconditionally awake, but still let the AP send us normal frames. ++ * inform AP that we will go to sleep so that it will buffer the frames ++ * while we scan + */ +-static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata, +- bool tell_ap) ++static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata) + { + struct ieee80211_local *local = sdata->local; + struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; +@@ -45,8 +41,8 @@ static void ieee80211_offchannel_ps_enable(struct ieee80211_sub_if_data *sdata, + ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); + } + +- if (tell_ap && (!local->offchannel_ps_enabled || +- !(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK))) ++ if (!(local->offchannel_ps_enabled) || ++ !(local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK)) + /* + * If power save was enabled, no need to send a nullfunc + * frame because AP knows that we are sleeping. But if the +@@ -81,9 +77,6 @@ static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata) + * we are sleeping, let's just enable power save mode in + * hardware. + */ +- /* TODO: Only set hardware if CONF_PS changed? +- * TODO: Should we set offchannel_ps_enabled to false? +- */ + local->hw.conf.flags |= IEEE80211_CONF_PS; + ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); + } else if (local->hw.conf.dynamic_ps_timeout > 0) { +@@ -102,61 +95,63 @@ static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata) + ieee80211_sta_reset_conn_monitor(sdata); + } + +-void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, +- bool offchannel_ps_enable) ++void ieee80211_offchannel_stop_beaconing(struct ieee80211_local *local) + { + struct ieee80211_sub_if_data *sdata; + +- /* +- * notify the AP about us leaving the channel and stop all +- * STA interfaces. +- */ + mutex_lock(&local->iflist_mtx); + list_for_each_entry(sdata, &local->interfaces, list) { + if (!ieee80211_sdata_running(sdata)) + continue; + +- if (sdata->vif.type != NL80211_IFTYPE_MONITOR) +- set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); +- +- /* Check to see if we should disable beaconing. */ ++ /* disable beaconing */ + if (sdata->vif.type == NL80211_IFTYPE_AP || + sdata->vif.type == NL80211_IFTYPE_ADHOC || + sdata->vif.type == NL80211_IFTYPE_MESH_POINT) + ieee80211_bss_info_change_notify( + sdata, BSS_CHANGED_BEACON_ENABLED); + +- if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { ++ /* ++ * only handle non-STA interfaces here, STA interfaces ++ * are handled in ieee80211_offchannel_stop_station(), ++ * e.g., from the background scan state machine. ++ * ++ * In addition, do not stop monitor interface to allow it to be ++ * used from user space controlled off-channel operations. ++ */ ++ if (sdata->vif.type != NL80211_IFTYPE_STATION && ++ sdata->vif.type != NL80211_IFTYPE_MONITOR) { ++ set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); + netif_tx_stop_all_queues(sdata->dev); +- if (offchannel_ps_enable && +- (sdata->vif.type == NL80211_IFTYPE_STATION) && +- sdata->u.mgd.associated) +- ieee80211_offchannel_ps_enable(sdata, true); + } + } + mutex_unlock(&local->iflist_mtx); + } + +-void ieee80211_offchannel_enable_all_ps(struct ieee80211_local *local, +- bool tell_ap) ++void ieee80211_offchannel_stop_station(struct ieee80211_local *local) + { + struct ieee80211_sub_if_data *sdata; + ++ /* ++ * notify the AP about us leaving the channel and stop all STA interfaces ++ */ + mutex_lock(&local->iflist_mtx); + list_for_each_entry(sdata, &local->interfaces, list) { + if (!ieee80211_sdata_running(sdata)) + continue; + +- if (sdata->vif.type == NL80211_IFTYPE_STATION && +- sdata->u.mgd.associated) +- ieee80211_offchannel_ps_enable(sdata, tell_ap); ++ if (sdata->vif.type == NL80211_IFTYPE_STATION) { ++ set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state); ++ netif_tx_stop_all_queues(sdata->dev); ++ if (sdata->u.mgd.associated) ++ ieee80211_offchannel_ps_enable(sdata); ++ } + } + mutex_unlock(&local->iflist_mtx); + } + + void ieee80211_offchannel_return(struct ieee80211_local *local, +- bool enable_beaconing, +- bool offchannel_ps_disable) ++ bool enable_beaconing) + { + struct ieee80211_sub_if_data *sdata; + +@@ -166,8 +161,7 @@ void ieee80211_offchannel_return(struct ieee80211_local *local, + continue; + + /* Tell AP we're back */ +- if (offchannel_ps_disable && +- sdata->vif.type == NL80211_IFTYPE_STATION) { ++ if (sdata->vif.type == NL80211_IFTYPE_STATION) { + if (sdata->u.mgd.associated) + ieee80211_offchannel_ps_disable(sdata); + } +@@ -187,7 +181,7 @@ void ieee80211_offchannel_return(struct ieee80211_local *local, + netif_tx_wake_all_queues(sdata->dev); + } + +- /* Check to see if we should re-enable beaconing */ ++ /* re-enable beaconing */ + if (enable_beaconing && + (sdata->vif.type == NL80211_IFTYPE_AP || + sdata->vif.type == NL80211_IFTYPE_ADHOC || +diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c +index fe2c2a7..b46880e 100644 +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -417,10 +417,16 @@ ieee80211_rx_h_passive_scan(struct ieee80211_rx_data *rx) + return RX_CONTINUE; + + if (test_bit(SCAN_HW_SCANNING, &local->scanning) || +- test_bit(SCAN_SW_SCANNING, &local->scanning) || + local->sched_scanning) + return ieee80211_scan_rx(rx->sdata, skb); + ++ if (test_bit(SCAN_SW_SCANNING, &local->scanning)) { ++ /* drop all the other packets during a software scan anyway */ ++ if (ieee80211_scan_rx(rx->sdata, skb) != RX_QUEUED) ++ dev_kfree_skb(skb); ++ return RX_QUEUED; ++ } ++ + /* scanning finished during invoking of handlers */ + I802_DEBUG_INC(local->rx_handlers_drop_passive_scan); + return RX_DROP_UNUSABLE; +@@ -2771,7 +2777,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, + local->dot11ReceivedFragmentCount++; + + if (unlikely(test_bit(SCAN_HW_SCANNING, &local->scanning) || +- test_bit(SCAN_SW_SCANNING, &local->scanning))) ++ test_bit(SCAN_OFF_CHANNEL, &local->scanning))) + status->rx_flags |= IEEE80211_RX_IN_SCAN; + + if (ieee80211_is_mgmt(fc)) +diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c +index 6f09eca..2ba4977 100644 +--- a/net/mac80211/scan.c ++++ b/net/mac80211/scan.c +@@ -212,14 +212,6 @@ ieee80211_scan_rx(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb) + if (bss) + ieee80211_rx_bss_put(sdata->local, bss); + +- /* If we are on-operating-channel, and this packet is for the +- * current channel, pass the pkt on up the stack so that +- * the rest of the stack can make use of it. +- */ +- if (ieee80211_cfg_on_oper_channel(sdata->local) +- && (channel == sdata->local->oper_channel)) +- return RX_CONTINUE; +- + dev_kfree_skb(skb); + return RX_QUEUED; + } +@@ -262,8 +254,6 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted, + bool was_hw_scan) + { + struct ieee80211_local *local = hw_to_local(hw); +- bool on_oper_chan; +- bool enable_beacons = false; + + lockdep_assert_held(&local->mtx); + +@@ -296,25 +286,11 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted, + local->scanning = 0; + local->scan_channel = NULL; + +- on_oper_chan = ieee80211_cfg_on_oper_channel(local); +- +- if (was_hw_scan || !on_oper_chan) +- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); +- else +- /* Set power back to normal operating levels. */ +- ieee80211_hw_config(local, 0); +- ++ ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); + if (!was_hw_scan) { +- bool on_oper_chan2; + ieee80211_configure_filter(local); + drv_sw_scan_complete(local); +- on_oper_chan2 = ieee80211_cfg_on_oper_channel(local); +- /* We should always be on-channel at this point. */ +- WARN_ON(!on_oper_chan2); +- if (on_oper_chan2 && (on_oper_chan != on_oper_chan2)) +- enable_beacons = true; +- +- ieee80211_offchannel_return(local, enable_beacons, true); ++ ieee80211_offchannel_return(local, true); + } + + ieee80211_recalc_idle(local); +@@ -355,15 +331,13 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local) + */ + drv_sw_scan_start(local); + ++ ieee80211_offchannel_stop_beaconing(local); ++ + local->leave_oper_channel_time = 0; + local->next_scan_state = SCAN_DECISION; + local->scan_channel_idx = 0; + +- /* We always want to use off-channel PS, even if we +- * are not really leaving oper-channel. Don't +- * tell the AP though, as long as we are on-channel. +- */ +- ieee80211_offchannel_enable_all_ps(local, false); ++ drv_flush(local, false); + + ieee80211_configure_filter(local); + +@@ -506,20 +480,7 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local, + } + mutex_unlock(&local->iflist_mtx); + +- next_chan = local->scan_req->channels[local->scan_channel_idx]; +- +- if (ieee80211_cfg_on_oper_channel(local)) { +- /* We're currently on operating channel. */ +- if (next_chan == local->oper_channel) +- /* We don't need to move off of operating channel. */ +- local->next_scan_state = SCAN_SET_CHANNEL; +- else +- /* +- * We do need to leave operating channel, as next +- * scan is somewhere else. +- */ +- local->next_scan_state = SCAN_LEAVE_OPER_CHANNEL; +- } else { ++ if (local->scan_channel) { + /* + * we're currently scanning a different channel, let's + * see if we can scan another channel without interfering +@@ -535,6 +496,7 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local, + * + * Otherwise switch back to the operating channel. + */ ++ next_chan = local->scan_req->channels[local->scan_channel_idx]; + + bad_latency = time_after(jiffies + + ieee80211_scan_get_channel_time(next_chan), +@@ -552,6 +514,12 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local, + local->next_scan_state = SCAN_ENTER_OPER_CHANNEL; + else + local->next_scan_state = SCAN_SET_CHANNEL; ++ } else { ++ /* ++ * we're on the operating channel currently, let's ++ * leave that channel now to scan another one ++ */ ++ local->next_scan_state = SCAN_LEAVE_OPER_CHANNEL; + } + + *next_delay = 0; +@@ -560,10 +528,9 @@ static void ieee80211_scan_state_decision(struct ieee80211_local *local, + static void ieee80211_scan_state_leave_oper_channel(struct ieee80211_local *local, + unsigned long *next_delay) + { +- /* PS will already be in off-channel mode, +- * we do that once at the beginning of scanning. +- */ +- ieee80211_offchannel_stop_vifs(local, false); ++ ieee80211_offchannel_stop_station(local); ++ ++ __set_bit(SCAN_OFF_CHANNEL, &local->scanning); + + /* + * What if the nullfunc frames didn't arrive? +@@ -586,15 +553,15 @@ static void ieee80211_scan_state_enter_oper_channel(struct ieee80211_local *loca + { + /* switch back to the operating channel */ + local->scan_channel = NULL; +- if (!ieee80211_cfg_on_oper_channel(local)) +- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); ++ ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); + + /* +- * Re-enable vifs and beaconing. Leave PS +- * in off-channel state..will put that back +- * on-channel at the end of scanning. ++ * Only re-enable station mode interface now; beaconing will be ++ * re-enabled once the full scan has been completed. + */ +- ieee80211_offchannel_return(local, true, false); ++ ieee80211_offchannel_return(local, false); ++ ++ __clear_bit(SCAN_OFF_CHANNEL, &local->scanning); + + *next_delay = HZ / 5; + local->next_scan_state = SCAN_DECISION; +diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c +index 8cb0d2d..54ea022 100644 +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -258,8 +258,7 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx) + if (unlikely(info->flags & IEEE80211_TX_CTL_INJECTED)) + return TX_CONTINUE; + +- if (unlikely(test_bit(SCAN_SW_SCANNING, &tx->local->scanning)) && +- test_bit(SDATA_STATE_OFFCHANNEL, &tx->sdata->state) && ++ if (unlikely(test_bit(SCAN_OFF_CHANNEL, &tx->local->scanning)) && + !ieee80211_is_probe_req(hdr->frame_control) && + !ieee80211_is_nullfunc(hdr->frame_control)) + /* +diff --git a/net/mac80211/work.c b/net/mac80211/work.c +index 7737f20..b76bf33 100644 +--- a/net/mac80211/work.c ++++ b/net/mac80211/work.c +@@ -901,26 +901,6 @@ static bool ieee80211_work_ct_coexists(enum nl80211_channel_type wk_ct, + return false; + } + +-static enum nl80211_channel_type +-ieee80211_calc_ct(enum nl80211_channel_type wk_ct, +- enum nl80211_channel_type oper_ct) +-{ +- switch (wk_ct) { +- case NL80211_CHAN_NO_HT: +- return oper_ct; +- case NL80211_CHAN_HT20: +- if (oper_ct != NL80211_CHAN_NO_HT) +- return oper_ct; +- return wk_ct; +- case NL80211_CHAN_HT40MINUS: +- case NL80211_CHAN_HT40PLUS: +- return wk_ct; +- } +- WARN_ON(1); /* shouldn't get here */ +- return wk_ct; +-} +- +- + static void ieee80211_work_timer(unsigned long data) + { + struct ieee80211_local *local = (void *) data; +@@ -971,52 +951,18 @@ static void ieee80211_work_work(struct work_struct *work) + } + + if (!started && !local->tmp_channel) { +- bool on_oper_chan; +- bool tmp_chan_changed = false; +- bool on_oper_chan2; +- enum nl80211_channel_type wk_ct; +- on_oper_chan = ieee80211_cfg_on_oper_channel(local); +- +- /* Work with existing channel type if possible. */ +- wk_ct = wk->chan_type; +- if (wk->chan == local->hw.conf.channel) +- wk_ct = ieee80211_calc_ct(wk->chan_type, +- local->hw.conf.channel_type); +- +- if (local->tmp_channel) +- if ((local->tmp_channel != wk->chan) || +- (local->tmp_channel_type != wk_ct)) +- tmp_chan_changed = true; +- +- local->tmp_channel = wk->chan; +- local->tmp_channel_type = wk_ct; + /* +- * Leave the station vifs in awake mode if they +- * happen to be on the same channel as +- * the requested channel. ++ * TODO: could optimize this by leaving the ++ * station vifs in awake mode if they ++ * happen to be on the same channel as ++ * the requested channel + */ +- on_oper_chan2 = ieee80211_cfg_on_oper_channel(local); +- if (on_oper_chan != on_oper_chan2) { +- if (on_oper_chan2) { +- /* going off oper channel, PS too */ +- ieee80211_offchannel_stop_vifs(local, +- true); +- ieee80211_hw_config(local, 0); +- } else { +- /* going on channel, but leave PS +- * off-channel. */ +- ieee80211_hw_config(local, 0); +- ieee80211_offchannel_return(local, +- true, +- false); +- } +- } else if (tmp_chan_changed) +- /* Still off-channel, but on some other +- * channel, so update hardware. +- * PS should already be off-channel. +- */ +- ieee80211_hw_config(local, 0); ++ ieee80211_offchannel_stop_beaconing(local); ++ ieee80211_offchannel_stop_station(local); + ++ local->tmp_channel = wk->chan; ++ local->tmp_channel_type = wk->chan_type; ++ ieee80211_hw_config(local, 0); + started = true; + wk->timeout = jiffies; + } +@@ -1102,8 +1048,7 @@ static void ieee80211_work_work(struct work_struct *work) + * we still need to do a hardware config. Currently, + * we cannot be here while scanning, however. + */ +- if (!ieee80211_cfg_on_oper_channel(local)) +- ieee80211_hw_config(local, 0); ++ ieee80211_hw_config(local, 0); + + /* At the least, we need to disable offchannel_ps, + * so just go ahead and run the entire offchannel +@@ -1111,7 +1056,7 @@ static void ieee80211_work_work(struct work_struct *work) + * beaconing if we were already on-oper-channel + * as a future optimization. + */ +- ieee80211_offchannel_return(local, true, true); ++ ieee80211_offchannel_return(local, true); + + /* give connection some time to breathe */ + run_again(local, jiffies + HZ/2); diff --git a/freed-ora/current/f15/net-sky2-88e8059-fix-link-speed.patch b/freed-ora/current/f15/net-sky2-88e8059-fix-link-speed.patch new file mode 100644 index 000000000..61e1c75df --- /dev/null +++ b/freed-ora/current/f15/net-sky2-88e8059-fix-link-speed.patch @@ -0,0 +1,42 @@ +commit 27d240fdae2808d727ad9ce48ec029731a457524 +Author: stephen hemminger <shemminger@vyatta.com> +Date: Fri Nov 4 12:17:17 2011 +0000 + + sky2: fix regression on Yukon Optima + + [ backport to 3.1 ] + + Changes to support other Optima types, introduced an accidental + regression that caused 88E8059 to come up in 10Mbit/sec. + + The Yukon Optima supports a reverse auto-negotiation feature that + was incorrectly setup, and not needed. The feature could be used to + allow wake-on-lan at higher speeds. But doing it correctly would require + other changes to initialization. + + Reported-by: Pavel Mateja <pavel@netsafe.cz> + Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> + Signed-off-by: David S. Miller <davem@davemloft.net> + +diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c +index cbd026f..fdc6c39 100644 +--- a/drivers/net/sky2.c ++++ b/drivers/net/sky2.c +@@ -366,17 +366,6 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port) + gm_phy_write(hw, port, PHY_MARV_FE_SPEC_2, spec); + } + } else { +- if (hw->chip_id >= CHIP_ID_YUKON_OPT) { +- u16 ctrl2 = gm_phy_read(hw, port, PHY_MARV_EXT_CTRL_2); +- +- /* enable PHY Reverse Auto-Negotiation */ +- ctrl2 |= 1u << 13; +- +- /* Write PHY changes (SW-reset must follow) */ +- gm_phy_write(hw, port, PHY_MARV_EXT_CTRL_2, ctrl2); +- } +- +- + /* disable energy detect */ + ctrl &= ~PHY_M_PC_EN_DET_MSK; + diff --git a/freed-ora/current/f15/patch-libre-3.1.4.bz2.sign b/freed-ora/current/f15/patch-libre-3.1.4.bz2.sign deleted file mode 100644 index 77fb583dc..000000000 --- a/freed-ora/current/f15/patch-libre-3.1.4.bz2.sign +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.18 (GNU/Linux) - -iEYEABECAAYFAk7U6/kACgkQvLfPh359R6fvbQCeIjhSr3QarBiTDWsD+asZEaSC -E6oAmwWGup3ipr9OJkXvrUjsqga+MeFj -=FiaC ------END PGP SIGNATURE----- diff --git a/freed-ora/current/f15/patch-libre-3.1.5.bz2.sign b/freed-ora/current/f15/patch-libre-3.1.5.bz2.sign new file mode 100644 index 000000000..b86351899 --- /dev/null +++ b/freed-ora/current/f15/patch-libre-3.1.5.bz2.sign @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.18 (GNU/Linux) + +iEYEABECAAYFAk7kJgYACgkQvLfPh359R6fkAwCdGZ7xVl9tkpVrjipjY9EmMN3B +CEcAninnMJYDZsToMAJ65lBhNqUlXhDT +=bi/i +-----END PGP SIGNATURE----- diff --git a/freed-ora/current/f15/pci-Rework-ASPM-disable-code.patch b/freed-ora/current/f15/pci-Rework-ASPM-disable-code.patch new file mode 100644 index 000000000..d6fb24320 --- /dev/null +++ b/freed-ora/current/f15/pci-Rework-ASPM-disable-code.patch @@ -0,0 +1,287 @@ +Path: news.gmane.org!not-for-mail +From: Matthew Garrett <mjg@redhat.com> +Newsgroups: gmane.linux.acpi.devel,gmane.linux.kernel.pci,gmane.linux.kernel +Subject: [PATCH] pci: Rework ASPM disable code +Date: Thu, 10 Nov 2011 16:38:33 -0500 +Lines: 232 +Approved: news@gmane.org +Message-ID: <1320961113-5050-1-git-send-email-mjg@redhat.com> +NNTP-Posting-Host: lo.gmane.org +X-Trace: dough.gmane.org 1320961145 13112 80.91.229.12 (10 Nov 2011 21:39:05 GMT) +X-Complaints-To: usenet@dough.gmane.org +NNTP-Posting-Date: Thu, 10 Nov 2011 21:39:05 +0000 (UTC) +Cc: linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, + linux-kernel@vger.kernel.org, Matthew Garrett <mjg@redhat.com> +To: jbarnes@virtuousgeek.org +Original-X-From: linux-acpi-owner@vger.kernel.org Thu Nov 10 22:38:57 2011 +Return-path: <linux-acpi-owner@vger.kernel.org> +Envelope-to: glad-acpi-devel@lo.gmane.org +Original-Received: from vger.kernel.org ([209.132.180.67]) + by lo.gmane.org with esmtp (Exim 4.69) + (envelope-from <linux-acpi-owner@vger.kernel.org>) + id 1ROcKm-0003jN-CL + for glad-acpi-devel@lo.gmane.org; Thu, 10 Nov 2011 22:38:56 +0100 +Original-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand + id S1751342Ab1KJViu (ORCPT <rfc822;glad-acpi-devel@m.gmane.org>); + Thu, 10 Nov 2011 16:38:50 -0500 +Original-Received: from mx1.redhat.com ([209.132.183.28]:32030 "EHLO mx1.redhat.com" + rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP + id S1750805Ab1KJVit (ORCPT <rfc822;linux-acpi@vger.kernel.org>); + Thu, 10 Nov 2011 16:38:49 -0500 +Original-Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) + by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAALcmdw013333 + (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); + Thu, 10 Nov 2011 16:38:49 -0500 +Original-Received: from cavan.codon.org.uk (ovpn-113-157.phx2.redhat.com [10.3.113.157]) + by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pAALclkW022022 + (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); + Thu, 10 Nov 2011 16:38:48 -0500 +Original-Received: from 209-6-41-104.c3-0.smr-ubr1.sbo-smr.ma.cable.rcn.com ([209.6.41.104] helo=localhost.localdomain) + by cavan.codon.org.uk with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) + (Exim 4.72) + (envelope-from <mjg@redhat.com>) + id 1ROcKa-0000F4-E4; Thu, 10 Nov 2011 21:38:44 +0000 +X-SA-Do-Not-Run: Yes +X-SA-Exim-Connect-IP: 209.6.41.104 +X-SA-Exim-Mail-From: mjg@redhat.com +X-SA-Exim-Scanned: No (on cavan.codon.org.uk); SAEximRunCond expanded to false +X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 +Original-Sender: linux-acpi-owner@vger.kernel.org +Precedence: bulk +List-ID: <linux-acpi.vger.kernel.org> +X-Mailing-List: linux-acpi@vger.kernel.org +Xref: news.gmane.org gmane.linux.acpi.devel:51182 gmane.linux.kernel.pci:12503 gmane.linux.kernel:1214427 +Archived-At: <http://permalink.gmane.org/gmane.linux.acpi.devel/51182> + +Right now we forcibly clear ASPM state on all devices if the BIOS indicates +that the feature isn't supported. Based on the Microsoft presentation +"PCI Express In Depth for Windows Vista and Beyond", I'm starting to think +that this may be an error. The implication is that unless the platform +grants full control via _OSC, Windows will not touch any PCIe features - +including ASPM. In that case clearing ASPM state would be an error unless +the platform has granted us that control. + +This patch reworks the ASPM disabling code such that the actual clearing +of state is triggered by a successful handoff of PCIe control to the OS. +The general ASPM code undergoes some changes in order to ensure that the +ability to clear the bits isn't overridden by ASPM having already been +disabled. Further, this theoretically now allows for situations where +only a subset of PCIe roots hand over control, leaving the others in the +BIOS state. + +It's difficult to know for sure that this is the right thing to do - +there's zero public documentation on the interaction between all of these +components. But enough vendors enable ASPM on platforms and then set this +bit that it seems likely that they're expecting the OS to leave them alone. + +Measured to save around 5W on an idle Thinkpad X220. + +Signed-off-by: Matthew Garrett <mjg@redhat.com> +--- + drivers/acpi/pci_root.c | 7 +++++ + drivers/pci/pci-acpi.c | 1 - + drivers/pci/pcie/aspm.c | 58 +++++++++++++++++++++++++++++---------------- + include/linux/pci-aspm.h | 4 +- + 4 files changed, 46 insertions(+), 24 deletions(-) + +diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c +index 2672c79..7aff631 100644 +--- a/drivers/acpi/pci_root.c ++++ b/drivers/acpi/pci_root.c +@@ -596,6 +596,13 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) + if (ACPI_SUCCESS(status)) { + dev_info(root->bus->bridge, + "ACPI _OSC control (0x%02x) granted\n", flags); ++ if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { ++ /* ++ * We have ASPM control, but the FADT indicates ++ * that it's unsupported. Clear it. ++ */ ++ pcie_clear_aspm(root->bus); ++ } + } else { + dev_info(root->bus->bridge, + "ACPI _OSC request failed (%s), " +diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c +index 4ecb640..c8e7585 100644 +--- a/drivers/pci/pci-acpi.c ++++ b/drivers/pci/pci-acpi.c +@@ -395,7 +395,6 @@ static int __init acpi_pci_init(void) + + if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) { + printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n"); +- pcie_clear_aspm(); + pcie_no_aspm(); + } + +diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c +index cbfbab1..1cfbf22 100644 +--- a/drivers/pci/pcie/aspm.c ++++ b/drivers/pci/pcie/aspm.c +@@ -68,7 +68,7 @@ struct pcie_link_state { + struct aspm_latency acceptable[8]; + }; + +-static int aspm_disabled, aspm_force, aspm_clear_state; ++static int aspm_disabled, aspm_force; + static bool aspm_support_enabled = true; + static DEFINE_MUTEX(aspm_lock); + static LIST_HEAD(link_list); +@@ -500,9 +500,6 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev) + int pos; + u32 reg32; + +- if (aspm_clear_state) +- return -EINVAL; +- + /* + * Some functions in a slot might not all be PCIe functions, + * very strange. Disable ASPM for the whole slot +@@ -574,9 +571,6 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev) + pdev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM) + return; + +- if (aspm_disabled && !aspm_clear_state) +- return; +- + /* VIA has a strange chipset, root port is under a bridge */ + if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT && + pdev->bus->self) +@@ -608,7 +602,7 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev) + * the BIOS's expectation, we'll do so once pci_enable_device() is + * called. + */ +- if (aspm_policy != POLICY_POWERSAVE || aspm_clear_state) { ++ if (aspm_policy != POLICY_POWERSAVE) { + pcie_config_aspm_path(link); + pcie_set_clkpm(link, policy_to_clkpm_state(link)); + } +@@ -649,8 +643,7 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev) + struct pci_dev *parent = pdev->bus->self; + struct pcie_link_state *link, *root, *parent_link; + +- if ((aspm_disabled && !aspm_clear_state) || !pci_is_pcie(pdev) || +- !parent || !parent->link_state) ++ if (!pci_is_pcie(pdev) || !parent || !parent->link_state) + return; + if ((parent->pcie_type != PCI_EXP_TYPE_ROOT_PORT) && + (parent->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)) +@@ -734,13 +727,18 @@ void pcie_aspm_powersave_config_link(struct pci_dev *pdev) + * pci_disable_link_state - disable pci device's link state, so the link will + * never enter specific states + */ +-static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem) ++static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem, ++ bool force) + { + struct pci_dev *parent = pdev->bus->self; + struct pcie_link_state *link; + +- if (aspm_disabled || !pci_is_pcie(pdev)) ++ if (aspm_disabled && !force) ++ return; ++ ++ if (!pci_is_pcie(pdev)) + return; ++ + if (pdev->pcie_type == PCI_EXP_TYPE_ROOT_PORT || + pdev->pcie_type == PCI_EXP_TYPE_DOWNSTREAM) + parent = pdev; +@@ -768,16 +766,31 @@ static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem) + + void pci_disable_link_state_locked(struct pci_dev *pdev, int state) + { +- __pci_disable_link_state(pdev, state, false); ++ __pci_disable_link_state(pdev, state, false, false); + } + EXPORT_SYMBOL(pci_disable_link_state_locked); + + void pci_disable_link_state(struct pci_dev *pdev, int state) + { +- __pci_disable_link_state(pdev, state, true); ++ __pci_disable_link_state(pdev, state, true, false); + } + EXPORT_SYMBOL(pci_disable_link_state); + ++void pcie_clear_aspm(struct pci_bus *bus) ++{ ++ struct pci_dev *child; ++ ++ /* ++ * Clear any ASPM setup that the firmware has carried out on this bus ++ */ ++ list_for_each_entry(child, &bus->devices, bus_list) { ++ __pci_disable_link_state(child, PCIE_LINK_STATE_L0S | ++ PCIE_LINK_STATE_L1 | ++ PCIE_LINK_STATE_CLKPM, ++ false, true); ++ } ++} ++ + static int pcie_aspm_set_policy(const char *val, struct kernel_param *kp) + { + int i; +@@ -935,6 +948,7 @@ void pcie_aspm_remove_sysfs_dev_files(struct pci_dev *pdev) + static int __init pcie_aspm_disable(char *str) + { + if (!strcmp(str, "off")) { ++ aspm_policy = POLICY_DEFAULT; + aspm_disabled = 1; + aspm_support_enabled = false; + printk(KERN_INFO "PCIe ASPM is disabled\n"); +@@ -947,16 +961,18 @@ static int __init pcie_aspm_disable(char *str) + + __setup("pcie_aspm=", pcie_aspm_disable); + +-void pcie_clear_aspm(void) +-{ +- if (!aspm_force) +- aspm_clear_state = 1; +-} +- + void pcie_no_aspm(void) + { +- if (!aspm_force) ++ /* ++ * Disabling ASPM is intended to prevent the kernel from modifying ++ * existing hardware state, not to clear existing state. To that end: ++ * (a) set policy to POLICY_DEFAULT in order to avoid changing state ++ * (b) prevent userspace from changing policy ++ */ ++ if (!aspm_force) { ++ aspm_policy = POLICY_DEFAULT; + aspm_disabled = 1; ++ } + } + + /** +diff --git a/include/linux/pci-aspm.h b/include/linux/pci-aspm.h +index 7cea7b6..c832014 100644 +--- a/include/linux/pci-aspm.h ++++ b/include/linux/pci-aspm.h +@@ -29,7 +29,7 @@ extern void pcie_aspm_pm_state_change(struct pci_dev *pdev); + extern void pcie_aspm_powersave_config_link(struct pci_dev *pdev); + extern void pci_disable_link_state(struct pci_dev *pdev, int state); + extern void pci_disable_link_state_locked(struct pci_dev *pdev, int state); +-extern void pcie_clear_aspm(void); ++extern void pcie_clear_aspm(struct pci_bus *bus); + extern void pcie_no_aspm(void); + #else + static inline void pcie_aspm_init_link_state(struct pci_dev *pdev) +@@ -47,7 +47,7 @@ static inline void pcie_aspm_powersave_config_link(struct pci_dev *pdev) + static inline void pci_disable_link_state(struct pci_dev *pdev, int state) + { + } +-static inline void pcie_clear_aspm(void) ++static inline void pcie_clear_aspm(struct pci_bus *bus) + { + } + static inline void pcie_no_aspm(void) +-- +1.7.7.1 + +-- +To unsubscribe from this list: send the line "unsubscribe linux-acpi" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + diff --git a/freed-ora/current/f15/quite-apm.patch b/freed-ora/current/f15/quite-apm.patch index 9325ae55b..c38511c41 100644 --- a/freed-ora/current/f15/quite-apm.patch +++ b/freed-ora/current/f15/quite-apm.patch @@ -7,7 +7,7 @@ index a46bd38..416dd12 100644 unsigned int bucket; - WARN_ONCE(1, "deprecated apm_cpu_idle will be deleted in 2012"); -+ printk(KERN_INFO "deprecated apm_cpu_idle will be deleted in 2012"); ++ printk_once(KERN_INFO "deprecated apm_cpu_idle will be deleted in 2012"); recalc: if (jiffies_since_last_check > IDLE_CALC_LIMIT) { use_apm_idle = 0; diff --git a/freed-ora/current/f15/rtlwifi-fix-lps_lock-deadlock.patch b/freed-ora/current/f15/rtlwifi-fix-lps_lock-deadlock.patch new file mode 100644 index 000000000..4e31ee9b7 --- /dev/null +++ b/freed-ora/current/f15/rtlwifi-fix-lps_lock-deadlock.patch @@ -0,0 +1,224 @@ +Path: news.gmane.org!not-for-mail +From: Stanislaw Gruszka <sgruszka-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> +Newsgroups: gmane.linux.kernel.wireless.general +Subject: [PATCH v2] rtlwifi: fix lps_lock deadlock +Date: Mon, 28 Nov 2011 10:33:40 +0100 +Lines: 169 +Approved: news@gmane.org +Message-ID: <20111128093339.GC2372@redhat.com> +References: <1322219327-23148-1-git-send-email-sgruszka@redhat.com> + <4ECFD1BF.4070503@lwfinger.net> + <20111128092308.GB2372@redhat.com> +NNTP-Posting-Host: lo.gmane.org +Mime-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +X-Trace: dough.gmane.org 1322472712 10173 80.91.229.12 (28 Nov 2011 09:31:52 GMT) +X-Complaints-To: usenet@dough.gmane.org +NNTP-Posting-Date: Mon, 28 Nov 2011 09:31:52 +0000 (UTC) +Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, + Chaoming Li <chaoming_li-kXabqFNEczNtrwSWzY7KCg@public.gmane.org> +To: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>, + "John W. Linville" <linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org> +Original-X-From: linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Mon Nov 28 10:31:45 2011 +Return-path: <linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> +Envelope-to: glkwg-linux-wireless-1dZseelyfdZg9hUCZPvPmw@public.gmane.org +Original-Received: from vger.kernel.org ([209.132.180.67]) + by lo.gmane.org with esmtp (Exim 4.69) + (envelope-from <linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>) + id 1RUxYu-0002H1-AY + for glkwg-linux-wireless-1dZseelyfdZg9hUCZPvPmw@public.gmane.org; Mon, 28 Nov 2011 10:31:44 +0100 +Original-Received: (majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org) by vger.kernel.org via listexpand + id S1751698Ab1K1Jbm (ORCPT + <rfc822;glkwg-linux-wireless@m.gmane.org>); + Mon, 28 Nov 2011 04:31:42 -0500 +Original-Received: from mx1.redhat.com ([209.132.183.28]:62078 "EHLO mx1.redhat.com" + rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP + id S1751434Ab1K1Jbl (ORCPT <rfc822;linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>); + Mon, 28 Nov 2011 04:31:41 -0500 +Original-Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) + by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAS9VSak003418 + (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); + Mon, 28 Nov 2011 04:31:28 -0500 +Original-Received: from localhost (vpn1-4-194.ams2.redhat.com [10.36.4.194]) + by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pAS9VQNG013260; + Mon, 28 Nov 2011 04:31:27 -0500 +Content-Disposition: inline +In-Reply-To: <20111128092308.GB2372-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> +User-Agent: Mutt/1.5.20 (2009-12-10) +X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 +Original-Sender: linux-wireless-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org +Precedence: bulk +List-ID: <linux-wireless.vger.kernel.org> +X-Mailing-List: linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org +Xref: news.gmane.org gmane.linux.kernel.wireless.general:81657 +Archived-At: <http://permalink.gmane.org/gmane.linux.kernel.wireless.general/81657> + +rtl_lps_leave can be called from interrupt context, so we have to +disable interrupts when taking lps_lock. + +Below is full lockdep info about deadlock: + +[ 93.815269] ================================= +[ 93.815390] [ INFO: inconsistent lock state ] +[ 93.815472] 2.6.41.1-3.offch.fc15.x86_64.debug #1 +[ 93.815556] --------------------------------- +[ 93.815635] inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage. +[ 93.815743] swapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes: +[ 93.815832] (&(&rtlpriv->locks.lps_lock)->rlock){+.?...}, at: [<ffffffffa025dad6>] rtl_lps_leave+0x26/0x103 [rtlwifi] +[ 93.815947] {SOFTIRQ-ON-W} state was registered at: +[ 93.815947] [<ffffffff8108e10d>] __lock_acquire+0x369/0xd0c +[ 93.815947] [<ffffffff8108efb3>] lock_acquire+0xf3/0x13e +[ 93.815947] [<ffffffff814e981d>] _raw_spin_lock+0x45/0x79 +[ 93.815947] [<ffffffffa025de34>] rtl_swlps_rf_awake+0x5a/0x76 [rtlwifi] +[ 93.815947] [<ffffffffa025aec0>] rtl_op_config+0x12a/0x32a [rtlwifi] +[ 93.815947] [<ffffffffa01d614b>] ieee80211_hw_config+0x124/0x129 [mac80211] +[ 93.815947] [<ffffffffa01e0af3>] ieee80211_dynamic_ps_disable_work+0x32/0x47 [mac80211] +[ 93.815947] [<ffffffff81075aa5>] process_one_work+0x205/0x3e7 +[ 93.815947] [<ffffffff81076753>] worker_thread+0xda/0x15d +[ 93.815947] [<ffffffff8107a119>] kthread+0xa8/0xb0 +[ 93.815947] [<ffffffff814f3184>] kernel_thread_helper+0x4/0x10 +[ 93.815947] irq event stamp: 547822 +[ 93.815947] hardirqs last enabled at (547822): [<ffffffff814ea1a7>] _raw_spin_unlock_irqrestore+0x45/0x61 +[ 93.815947] hardirqs last disabled at (547821): [<ffffffff814e9987>] _raw_spin_lock_irqsave+0x22/0x8e +[ 93.815947] softirqs last enabled at (547790): [<ffffffff810623ed>] _local_bh_enable+0x13/0x15 +[ 93.815947] softirqs last disabled at (547791): [<ffffffff814f327c>] call_softirq+0x1c/0x30 +[ 93.815947] +[ 93.815947] other info that might help us debug this: +[ 93.815947] Possible unsafe locking scenario: +[ 93.815947] +[ 93.815947] CPU0 +[ 93.815947] ---- +[ 93.815947] lock(&(&rtlpriv->locks.lps_lock)->rlock); +[ 93.815947] <Interrupt> +[ 93.815947] lock(&(&rtlpriv->locks.lps_lock)->rlock); +[ 93.815947] +[ 93.815947] *** DEADLOCK *** +[ 93.815947] +[ 93.815947] no locks held by swapper/0. +[ 93.815947] +[ 93.815947] stack backtrace: +[ 93.815947] Pid: 0, comm: swapper Not tainted 2.6.41.1-3.offch.fc15.x86_64.debug #1 +[ 93.815947] Call Trace: +[ 93.815947] <IRQ> [<ffffffff814dfd00>] print_usage_bug+0x1e7/0x1f8 +[ 93.815947] [<ffffffff8101a849>] ? save_stack_trace+0x2c/0x49 +[ 93.815947] [<ffffffff8108d55c>] ? print_irq_inversion_bug.part.18+0x1a0/0x1a0 +[ 93.815947] [<ffffffff8108dc8a>] mark_lock+0x106/0x220 +[ 93.815947] [<ffffffff8108e099>] __lock_acquire+0x2f5/0xd0c +[ 93.815947] [<ffffffff810152af>] ? native_sched_clock+0x34/0x36 +[ 93.830125] [<ffffffff810152ba>] ? sched_clock+0x9/0xd +[ 93.830125] [<ffffffff81080181>] ? sched_clock_local+0x12/0x75 +[ 93.830125] [<ffffffffa025dad6>] ? rtl_lps_leave+0x26/0x103 [rtlwifi] +[ 93.830125] [<ffffffff8108efb3>] lock_acquire+0xf3/0x13e +[ 93.830125] [<ffffffffa025dad6>] ? rtl_lps_leave+0x26/0x103 [rtlwifi] +[ 93.830125] [<ffffffff814e981d>] _raw_spin_lock+0x45/0x79 +[ 93.830125] [<ffffffffa025dad6>] ? rtl_lps_leave+0x26/0x103 [rtlwifi] +[ 93.830125] [<ffffffff81422467>] ? skb_dequeue+0x62/0x6d +[ 93.830125] [<ffffffffa025dad6>] rtl_lps_leave+0x26/0x103 [rtlwifi] +[ 93.830125] [<ffffffffa025f677>] _rtl_pci_ips_leave_tasklet+0xe/0x10 [rtlwifi] +[ 93.830125] [<ffffffff8106281f>] tasklet_action+0x8d/0xee +[ 93.830125] [<ffffffff810629ce>] __do_softirq+0x112/0x25a +[ 93.830125] [<ffffffff814f327c>] call_softirq+0x1c/0x30 +[ 93.830125] [<ffffffff81010bf6>] do_softirq+0x4b/0xa1 +[ 93.830125] [<ffffffff81062d7d>] irq_exit+0x5d/0xcf +[ 93.830125] [<ffffffff814f3b7e>] do_IRQ+0x8e/0xa5 +[ 93.830125] [<ffffffff814ea533>] common_interrupt+0x73/0x73 +[ 93.830125] <EOI> [<ffffffff8108b825>] ? trace_hardirqs_off+0xd/0xf +[ 93.830125] [<ffffffff812bb6d5>] ? intel_idle+0xe5/0x10c +[ 93.830125] [<ffffffff812bb6d1>] ? intel_idle+0xe1/0x10c +[ 93.830125] [<ffffffff813f8d5e>] cpuidle_idle_call+0x11c/0x1fe +[ 93.830125] [<ffffffff8100e2ef>] cpu_idle+0xab/0x101 +[ 93.830125] [<ffffffff814c6373>] rest_init+0xd7/0xde +[ 93.830125] [<ffffffff814c629c>] ? csum_partial_copy_generic+0x16c/0x16c +[ 93.830125] [<ffffffff81d4bbb0>] start_kernel+0x3dd/0x3ea +[ 93.830125] [<ffffffff81d4b2c4>] x86_64_start_reservations+0xaf/0xb3 +[ 93.830125] [<ffffffff81d4b140>] ? early_idt_handlers+0x140/0x140 +[ 93.830125] [<ffffffff81d4b3ca>] x86_64_start_kernel+0x102/0x111 + +Resolves: +https://bugzilla.redhat.com/show_bug.cgi?id=755154 + +Reported-by: vjain02-9geRo0GdX4mblYp+tMVdN4dd74u8MsAO@public.gmane.org +Reported-and-tested-by: Oliver Paukstadt <pstadt-J4iCZ0GWXu6s5+MaFmuW5Q@public.gmane.org> +Cc: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org +Acked-by: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org> +Signed-off-by: Stanislaw Gruszka <sgruszka-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> +--- +v1 -> v2: add bug report reference + + drivers/net/wireless/rtlwifi/ps.c | 17 +++++++++-------- + 1 files changed, 9 insertions(+), 8 deletions(-) + +diff --git a/drivers/net/wireless/rtlwifi/ps.c b/drivers/net/wireless/rtlwifi/ps.c +index db52628..55c8e50 100644 +--- a/drivers/net/wireless/rtlwifi/ps.c ++++ b/drivers/net/wireless/rtlwifi/ps.c +@@ -395,7 +395,7 @@ void rtl_lps_enter(struct ieee80211_hw *hw) + if (mac->link_state != MAC80211_LINKED) + return; + +- spin_lock(&rtlpriv->locks.lps_lock); ++ spin_lock_irq(&rtlpriv->locks.lps_lock); + + /* Idle for a while if we connect to AP a while ago. */ + if (mac->cnt_after_linked >= 2) { +@@ -407,7 +407,7 @@ void rtl_lps_enter(struct ieee80211_hw *hw) + } + } + +- spin_unlock(&rtlpriv->locks.lps_lock); ++ spin_unlock_irq(&rtlpriv->locks.lps_lock); + } + + /*Leave the leisure power save mode.*/ +@@ -416,8 +416,9 @@ void rtl_lps_leave(struct ieee80211_hw *hw) + struct rtl_priv *rtlpriv = rtl_priv(hw); + struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); + struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); ++ unsigned long flags; + +- spin_lock(&rtlpriv->locks.lps_lock); ++ spin_lock_irqsave(&rtlpriv->locks.lps_lock, flags); + + if (ppsc->fwctrl_lps) { + if (ppsc->dot11_psmode != EACTIVE) { +@@ -438,7 +439,7 @@ void rtl_lps_leave(struct ieee80211_hw *hw) + rtl_lps_set_psmode(hw, EACTIVE); + } + } +- spin_unlock(&rtlpriv->locks.lps_lock); ++ spin_unlock_irqrestore(&rtlpriv->locks.lps_lock, flags); + } + + /* For sw LPS*/ +@@ -539,9 +540,9 @@ void rtl_swlps_rf_awake(struct ieee80211_hw *hw) + RT_CLEAR_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM); + } + +- spin_lock(&rtlpriv->locks.lps_lock); ++ spin_lock_irq(&rtlpriv->locks.lps_lock); + rtl_ps_set_rf_state(hw, ERFON, RF_CHANGE_BY_PS); +- spin_unlock(&rtlpriv->locks.lps_lock); ++ spin_unlock_irq(&rtlpriv->locks.lps_lock); + } + + void rtl_swlps_rfon_wq_callback(void *data) +@@ -574,9 +575,9 @@ void rtl_swlps_rf_sleep(struct ieee80211_hw *hw) + if (rtlpriv->link_info.busytraffic) + return; + +- spin_lock(&rtlpriv->locks.lps_lock); ++ spin_lock_irq(&rtlpriv->locks.lps_lock); + rtl_ps_set_rf_state(hw, ERFSLEEP, RF_CHANGE_BY_PS); +- spin_unlock(&rtlpriv->locks.lps_lock); ++ spin_unlock_irq(&rtlpriv->locks.lps_lock); + + if (ppsc->reg_rfps_level & RT_RF_OFF_LEVL_ASPM && + !RT_IN_PS_LEVEL(ppsc, RT_PS_LEVEL_ASPM)) { +-- +1.7.1 + +-- +To unsubscribe from this list: send the line "unsubscribe linux-wireless" in +the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + diff --git a/freed-ora/current/f15/sources b/freed-ora/current/f15/sources index 73ace2844..4281626e4 100644 --- a/freed-ora/current/f15/sources +++ b/freed-ora/current/f15/sources @@ -1,2 +1,2 @@ 08a17f7b2ba0cf99944672d773ad5a46 linux-3.1-libre.tar.bz2 -7687deb3b0868ffaeecce80bb092145c patch-libre-3.1.4.bz2 +e035fb82dac7849769461f16589475f5 patch-libre-3.1.5.bz2 |

