diff --git a/debian/changelog b/debian/changelog index 9f2533984..5cc8f97f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,12 +10,38 @@ linux-2.6 (2.6.34-1~experimental.2) UNRELEASED; urgency=low * [mipsel] Add a loongson-2f flavour * [mipsel] Loongson: Define rtc device on MC146818-equipped systems * Make gcc-4.4 the default compiler + * [ia64] Hardcode the output of the scripts under arch/ia64/scripts so + that we can build out-of-tree modules correctly (refresh and re-add + dropped patch) (Closes: #392592) + * [ia64] Enable SGI SN support and mspec driver (Closes: #582224) + * iwlwifi: Disable QoS when connected to a non-QoS-capable AP + (Closes: #578262) + * [x86] Disable e_powersaver cpufreq driver as unsafe. It has already + been blacklisted by cpufrequtils. The acpi-cpufreq driver can be used + instead on some VIA C7 systems. (Closes: #566208) + * [amd64] ext4: Fix compat EXT4_IOC_ADD_GROUP (used by online resize) + * Install debug kernel image in /usr/lib/debug/boot (Closes: #582810) + * Build inet_lro as a module + * [sparc] Enable CONFIG_FB_XVR500, CONFIG_FB_XVR2500 (Closes: #508108) [ maximilian attems ] * topconfig enable CFQ_GROUP_IOSCHED, MFD_WM8994, REGULATOR_MAX8649, REGULATOR_WM8994, VHOST_NET, BT_ATH3K, CRYPTO_PCRYPT. * [x86] Enable X86_PCC_CPUFREQ, VGA_SWITCHEROO (closes: #582637). + [ Martin Michlmayr ] + * QNAP TS-419P: Export GPIO indicating jumper setting of JP1. + + [ dann frazier ] + * [hppa] clear floating point exception flag on SIGFPE signal + (Closes: #559406) + + [ Aurelien Jarno ] + * [sh4] fix sh_tmu clocksource following recent nohz changes. + + [ Moritz Muehlenhoff ] + * Enable X86 board specific fixups for reboot (Closes: #536537) + -- Ben Hutchings Wed, 26 May 2010 02:55:03 +0100 linux-2.6 (2.6.34-1~experimental.1) experimental; urgency=low diff --git a/debian/config/config b/debian/config/config index 31f6ef08a..146bb3b9b 100644 --- a/debian/config/config +++ b/debian/config/config @@ -3663,7 +3663,7 @@ CONFIG_INET_IPCOMP=m CONFIG_INET_XFRM_MODE_TRANSPORT=m CONFIG_INET_XFRM_MODE_TUNNEL=m CONFIG_INET_XFRM_MODE_BEET=m -CONFIG_INET_LRO=y +CONFIG_INET_LRO=m CONFIG_INET_DIAG=m CONFIG_TCP_CONG_ADVANCED=y CONFIG_TCP_CONG_BIC=m diff --git a/debian/config/ia64/config b/debian/config/ia64/config index f1b551f7d..27aa517b8 100644 --- a/debian/config/ia64/config +++ b/debian/config/ia64/config @@ -6,6 +6,7 @@ CONFIG_OPROFILE=m ## ## file: arch/ia64/Kconfig ## +CONFIG_IA64_UNCACHED_ALLOCATOR=y CONFIG_HOTPLUG_CPU=y CONFIG_SCHED_SMT=y CONFIG_PERMIT_BSP_REMOVE=y @@ -14,8 +15,10 @@ CONFIG_IA32_SUPPORT=y CONFIG_IA64_MCA_RECOVERY=m CONFIG_PERFMON=y CONFIG_IA64_PALINFO=m +CONFIG_SGI_SN=y CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y +CONFIG_MSPEC=m ## ## file: arch/ia64/Kconfig.debug diff --git a/debian/config/kernelarch-x86/config-arch-32 b/debian/config/kernelarch-x86/config-arch-32 index f67f531a7..2941f18ab 100644 --- a/debian/config/kernelarch-x86/config-arch-32 +++ b/debian/config/kernelarch-x86/config-arch-32 @@ -9,7 +9,7 @@ CONFIG_VMI=y CONFIG_NR_CPUS=32 CONFIG_VM86=y CONFIG_TOSHIBA=m -# CONFIG_X86_REBOOTFIXUPS is not set +CONFIG_X86_REBOOTFIXUPS=y ## choice: High Memory Support # CONFIG_NOHIGHMEM is not set CONFIG_HIGHMEM4G=y @@ -59,7 +59,7 @@ CONFIG_X86_P4_CLOCKMOD=m CONFIG_X86_CPUFREQ_NFORCE2=m CONFIG_X86_LONGRUN=m CONFIG_X86_LONGHAUL=m -CONFIG_X86_E_POWERSAVER=m +# CONFIG_X86_E_POWERSAVER is not set CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y ## diff --git a/debian/config/sparc/config b/debian/config/sparc/config index 451971fb1..fb133fc4f 100644 --- a/debian/config/sparc/config +++ b/debian/config/sparc/config @@ -455,6 +455,8 @@ CONFIG_FB_FFB=y # CONFIG_FB_CG14 is not set # CONFIG_FB_P9100 is not set # CONFIG_FB_LEO is not set +CONFIG_FB_XVR500=y +CONFIG_FB_XVR2500=y # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_NVIDIA is not set # CONFIG_FB_RIVA is not set diff --git a/debian/patches/bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch b/debian/patches/bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch new file mode 100644 index 000000000..60bfc9687 --- /dev/null +++ b/debian/patches/bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch @@ -0,0 +1,39 @@ +From: Ben Hutchings +Date: Mon, 17 May 2010 05:00:00 -0400 +Subject: [PATCH 1/2] ext4: Conditionally define compat ioctl numbers + +commit 899ad0cea6ad7ff4ba24b16318edbc3cbbe03fad upstream. + +It is unnecessary, and in general impossible, to define the compat +ioctl numbers except when building the filesystem with CONFIG_COMPAT +defined. + +Signed-off-by: Ben Hutchings +Signed-off-by: "Theodore Ts'o" +--- + fs/ext4/ext4.h | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h +index 7441488..d8c28f6 100644 +--- a/fs/ext4/ext4.h ++++ b/fs/ext4/ext4.h +@@ -498,6 +498,7 @@ struct ext4_new_group_data { + #define EXT4_IOC_ALLOC_DA_BLKS _IO('f', 12) + #define EXT4_IOC_MOVE_EXT _IOWR('f', 15, struct move_extent) + ++#if defined(__KERNEL__) && defined(CONFIG_COMPAT) + /* + * ioctl commands in 32 bit emulation + */ +@@ -513,6 +514,7 @@ struct ext4_new_group_data { + #endif + #define EXT4_IOC32_GETVERSION_OLD FS_IOC32_GETVERSION + #define EXT4_IOC32_SETVERSION_OLD FS_IOC32_SETVERSION ++#endif + + + /* +-- +1.7.1 + diff --git a/debian/patches/bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch b/debian/patches/bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch new file mode 100644 index 000000000..d60ab3b10 --- /dev/null +++ b/debian/patches/bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch @@ -0,0 +1,96 @@ +From: Ben Hutchings +Date: Mon, 17 May 2010 06:00:00 -0400 +Subject: [PATCH 2/2] ext4: Fix compat EXT4_IOC_ADD_GROUP + +commit 4d92dc0f00a775dc2e1267b0e00befb783902fe7 upstream. + +struct ext4_new_group_input needs to be converted because u64 has +only 32-bit alignment on some 32-bit architectures, notably i386. + +Signed-off-by: Ben Hutchings +Signed-off-by: "Theodore Ts'o" +--- + fs/ext4/ext4.h | 16 ++++++++++++++++ + fs/ext4/ioctl.c | 25 +++++++++++++++++++++++-- + 2 files changed, 39 insertions(+), 2 deletions(-) + +diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h +index d8c28f6..2c1165f 100644 +--- a/fs/ext4/ext4.h ++++ b/fs/ext4/ext4.h +@@ -29,6 +29,9 @@ + #include + #include + #include ++#ifdef __KERNEL__ ++#include ++#endif + + /* + * The fourth extended filesystem constants/structures +@@ -432,6 +435,18 @@ struct ext4_new_group_input { + __u16 unused; + }; + ++#if defined(__KERNEL__) && defined(CONFIG_COMPAT) ++struct compat_ext4_new_group_input { ++ u32 group; ++ compat_u64 block_bitmap; ++ compat_u64 inode_bitmap; ++ compat_u64 inode_table; ++ u32 blocks_count; ++ u16 reserved_blocks; ++ u16 unused; ++}; ++#endif ++ + /* The struct ext4_new_group_input in kernel space, with free_blocks_count */ + struct ext4_new_group_data { + __u32 group; +@@ -509,6 +524,7 @@ struct ext4_new_group_data { + #define EXT4_IOC32_GETRSVSZ _IOR('f', 5, int) + #define EXT4_IOC32_SETRSVSZ _IOW('f', 6, int) + #define EXT4_IOC32_GROUP_EXTEND _IOW('f', 7, unsigned int) ++#define EXT4_IOC32_GROUP_ADD _IOW('f', 8, struct compat_ext4_new_group_input) + #ifdef CONFIG_JBD2_DEBUG + #define EXT4_IOC32_WAIT_FOR_READONLY _IOR('f', 99, int) + #endif +diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c +index 66fa0b0..6ddec84 100644 +--- a/fs/ext4/ioctl.c ++++ b/fs/ext4/ioctl.c +@@ -373,8 +373,29 @@ long ext4_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) + case EXT4_IOC32_SETRSVSZ: + cmd = EXT4_IOC_SETRSVSZ; + break; +- case EXT4_IOC_GROUP_ADD: +- break; ++ case EXT4_IOC32_GROUP_ADD: { ++ struct compat_ext4_new_group_input __user *uinput; ++ struct ext4_new_group_input input; ++ mm_segment_t old_fs; ++ int err; ++ ++ uinput = compat_ptr(arg); ++ err = get_user(input.group, &uinput->group); ++ err |= get_user(input.block_bitmap, &uinput->block_bitmap); ++ err |= get_user(input.inode_bitmap, &uinput->inode_bitmap); ++ err |= get_user(input.inode_table, &uinput->inode_table); ++ err |= get_user(input.blocks_count, &uinput->blocks_count); ++ err |= get_user(input.reserved_blocks, ++ &uinput->reserved_blocks); ++ if (err) ++ return -EFAULT; ++ old_fs = get_fs(); ++ set_fs(KERNEL_DS); ++ err = ext4_ioctl(file, EXT4_IOC_GROUP_ADD, ++ (unsigned long) &input); ++ set_fs(old_fs); ++ return err; ++ } + default: + return -ENOIOCTLCMD; + } +-- +1.7.1 + diff --git a/debian/patches/bugfix/all/iwlwifi-manage-QoS-by-mac-stack.patch b/debian/patches/bugfix/all/iwlwifi-manage-QoS-by-mac-stack.patch new file mode 100644 index 000000000..e217ad035 --- /dev/null +++ b/debian/patches/bugfix/all/iwlwifi-manage-QoS-by-mac-stack.patch @@ -0,0 +1,357 @@ +From: Stanislaw Gruszka +Date: Mon, 29 Mar 2010 12:18:35 +0200 +Subject: [PATCH] iwlwifi: manage QoS by mac stack + +commit e61146e36b40fd9d346118c40285913236c329f3 upstream. + +We activate/deactivate QoS and setup default queue parameters in iwlwifi +driver. Mac stack do the same, so we do not need repeat that work here. +Stack also will tell when disable QoS, this will fix driver when working +with older APs, that do not have QoS implemented. + +Patch make "force = true" in iwl_active_qos() assuming we always want +to do with QoS what mac stack wish. + +Patch also remove unused qos_cap bits, do not initialize qos_active = 0, +as we have it initialized to zero by kzalloc. + +Signed-off-by: Stanislaw Gruszka +Signed-off-by: John W. Linville +[bwh: Adjust context for 2.6.34] +--- + drivers/net/wireless/iwlwifi/iwl-agn.c | 15 --- + drivers/net/wireless/iwlwifi/iwl-core.c | 142 +++------------------------ + drivers/net/wireless/iwlwifi/iwl-core.h | 3 +- + drivers/net/wireless/iwlwifi/iwl-dev.h | 21 ---- + drivers/net/wireless/iwlwifi/iwl3945-base.c | 7 -- + 5 files changed, 17 insertions(+), 171 deletions(-) + +diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c +index 3f0fd75..b431e92 100644 +--- a/drivers/net/wireless/iwlwifi/iwl-agn.c ++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c +@@ -2531,7 +2531,6 @@ void iwl_post_associate(struct iwl_priv *priv) + { + struct ieee80211_conf *conf = NULL; + int ret = 0; +- unsigned long flags; + + if (priv->iw_mode == NL80211_IFTYPE_AP) { + IWL_ERR(priv, "%s Should not be called in AP mode\n", __func__); +@@ -2612,10 +2611,6 @@ void iwl_post_associate(struct iwl_priv *priv) + if (priv->iw_mode == NL80211_IFTYPE_ADHOC) + priv->assoc_station_added = 1; + +- spin_lock_irqsave(&priv->lock, flags); +- iwl_activate_qos(priv, 0); +- spin_unlock_irqrestore(&priv->lock, flags); +- + /* the chain noise calibration will enabled PM upon completion + * If chain noise has already been run, then we need to enable + * power management here */ +@@ -2792,7 +2787,6 @@ static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) + void iwl_config_ap(struct iwl_priv *priv) + { + int ret = 0; +- unsigned long flags; + + if (test_bit(STATUS_EXIT_PENDING, &priv->status)) + return; +@@ -2844,10 +2838,6 @@ void iwl_config_ap(struct iwl_priv *priv) + /* restore RXON assoc */ + priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK; + iwlcore_commit_rxon(priv); +- iwl_reset_qos(priv); +- spin_lock_irqsave(&priv->lock, flags); +- iwl_activate_qos(priv, 1); +- spin_unlock_irqrestore(&priv->lock, flags); + iwl_add_bcast_station(priv); + } + iwl_send_beacon_cmd(priv); +@@ -3382,11 +3372,6 @@ static int iwl_init_drv(struct iwl_priv *priv) + + iwl_init_scan_params(priv); + +- iwl_reset_qos(priv); +- +- priv->qos_data.qos_active = 0; +- priv->qos_data.qos_cap.val = 0; +- + priv->rates_mask = IWL_RATES_MASK; + /* Set the tx_power_user_lmt to the lowest power level + * this value will get overwritten by channel max power avg +diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c +index 1b4408a..38d19c1 100644 +--- a/drivers/net/wireless/iwlwifi/iwl-core.c ++++ b/drivers/net/wireless/iwlwifi/iwl-core.c +@@ -223,17 +223,13 @@ EXPORT_SYMBOL(iwl_hw_detect); + /* + * QoS support + */ +-void iwl_activate_qos(struct iwl_priv *priv, u8 force) ++static void iwl_update_qos(struct iwl_priv *priv) + { + if (test_bit(STATUS_EXIT_PENDING, &priv->status)) + return; + + priv->qos_data.def_qos_parm.qos_flags = 0; + +- if (priv->qos_data.qos_cap.q_AP.queue_request && +- !priv->qos_data.qos_cap.q_AP.txop_request) +- priv->qos_data.def_qos_parm.qos_flags |= +- QOS_PARAM_FLG_TXOP_TYPE_MSK; + if (priv->qos_data.qos_active) + priv->qos_data.def_qos_parm.qos_flags |= + QOS_PARAM_FLG_UPDATE_EDCA_MSK; +@@ -241,118 +237,14 @@ void iwl_activate_qos(struct iwl_priv *priv, u8 force) + if (priv->current_ht_config.is_ht) + priv->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK; + +- if (force || iwl_is_associated(priv)) { +- IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n", +- priv->qos_data.qos_active, +- priv->qos_data.def_qos_parm.qos_flags); ++ IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n", ++ priv->qos_data.qos_active, ++ priv->qos_data.def_qos_parm.qos_flags); + +- iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM, +- sizeof(struct iwl_qosparam_cmd), +- &priv->qos_data.def_qos_parm, NULL); +- } ++ iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM, ++ sizeof(struct iwl_qosparam_cmd), ++ &priv->qos_data.def_qos_parm, NULL); + } +-EXPORT_SYMBOL(iwl_activate_qos); +- +-/* +- * AC CWmin CW max AIFSN TXOP Limit TXOP Limit +- * (802.11b) (802.11a/g) +- * AC_BK 15 1023 7 0 0 +- * AC_BE 15 1023 3 0 0 +- * AC_VI 7 15 2 6.016ms 3.008ms +- * AC_VO 3 7 2 3.264ms 1.504ms +- */ +-void iwl_reset_qos(struct iwl_priv *priv) +-{ +- u16 cw_min = 15; +- u16 cw_max = 1023; +- u8 aifs = 2; +- bool is_legacy = false; +- unsigned long flags; +- int i; +- +- spin_lock_irqsave(&priv->lock, flags); +- /* QoS always active in AP and ADHOC mode +- * In STA mode wait for association +- */ +- if (priv->iw_mode == NL80211_IFTYPE_ADHOC || +- priv->iw_mode == NL80211_IFTYPE_AP) +- priv->qos_data.qos_active = 1; +- else +- priv->qos_data.qos_active = 0; +- +- /* check for legacy mode */ +- if ((priv->iw_mode == NL80211_IFTYPE_ADHOC && +- (priv->active_rate & IWL_OFDM_RATES_MASK) == 0) || +- (priv->iw_mode == NL80211_IFTYPE_STATION && +- (priv->staging_rxon.flags & RXON_FLG_SHORT_SLOT_MSK) == 0)) { +- cw_min = 31; +- is_legacy = 1; +- } +- +- if (priv->qos_data.qos_active) +- aifs = 3; +- +- /* AC_BE */ +- priv->qos_data.def_qos_parm.ac[0].cw_min = cpu_to_le16(cw_min); +- priv->qos_data.def_qos_parm.ac[0].cw_max = cpu_to_le16(cw_max); +- priv->qos_data.def_qos_parm.ac[0].aifsn = aifs; +- priv->qos_data.def_qos_parm.ac[0].edca_txop = 0; +- priv->qos_data.def_qos_parm.ac[0].reserved1 = 0; +- +- if (priv->qos_data.qos_active) { +- /* AC_BK */ +- i = 1; +- priv->qos_data.def_qos_parm.ac[i].cw_min = cpu_to_le16(cw_min); +- priv->qos_data.def_qos_parm.ac[i].cw_max = cpu_to_le16(cw_max); +- priv->qos_data.def_qos_parm.ac[i].aifsn = 7; +- priv->qos_data.def_qos_parm.ac[i].edca_txop = 0; +- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0; +- +- /* AC_VI */ +- i = 2; +- priv->qos_data.def_qos_parm.ac[i].cw_min = +- cpu_to_le16((cw_min + 1) / 2 - 1); +- priv->qos_data.def_qos_parm.ac[i].cw_max = +- cpu_to_le16(cw_min); +- priv->qos_data.def_qos_parm.ac[i].aifsn = 2; +- if (is_legacy) +- priv->qos_data.def_qos_parm.ac[i].edca_txop = +- cpu_to_le16(6016); +- else +- priv->qos_data.def_qos_parm.ac[i].edca_txop = +- cpu_to_le16(3008); +- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0; +- +- /* AC_VO */ +- i = 3; +- priv->qos_data.def_qos_parm.ac[i].cw_min = +- cpu_to_le16((cw_min + 1) / 4 - 1); +- priv->qos_data.def_qos_parm.ac[i].cw_max = +- cpu_to_le16((cw_min + 1) / 2 - 1); +- priv->qos_data.def_qos_parm.ac[i].aifsn = 2; +- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0; +- if (is_legacy) +- priv->qos_data.def_qos_parm.ac[i].edca_txop = +- cpu_to_le16(3264); +- else +- priv->qos_data.def_qos_parm.ac[i].edca_txop = +- cpu_to_le16(1504); +- } else { +- for (i = 1; i < 4; i++) { +- priv->qos_data.def_qos_parm.ac[i].cw_min = +- cpu_to_le16(cw_min); +- priv->qos_data.def_qos_parm.ac[i].cw_max = +- cpu_to_le16(cw_max); +- priv->qos_data.def_qos_parm.ac[i].aifsn = aifs; +- priv->qos_data.def_qos_parm.ac[i].edca_txop = 0; +- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0; +- } +- } +- IWL_DEBUG_QOS(priv, "set QoS to default \n"); +- +- spin_unlock_irqrestore(&priv->lock, flags); +-} +-EXPORT_SYMBOL(iwl_reset_qos); + + #define MAX_BIT_RATE_40_MHZ 150 /* Mbps */ + #define MAX_BIT_RATE_20_MHZ 72 /* Mbps */ +@@ -1894,12 +1786,6 @@ int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue, + cpu_to_le16((params->txop * 32)); + + priv->qos_data.def_qos_parm.ac[q].reserved1 = 0; +- priv->qos_data.qos_active = 1; +- +- if (priv->iw_mode == NL80211_IFTYPE_AP) +- iwl_activate_qos(priv, 1); +- else if (priv->assoc_id && iwl_is_associated(priv)) +- iwl_activate_qos(priv, 0); + + spin_unlock_irqrestore(&priv->lock, flags); + +@@ -2170,11 +2056,8 @@ int iwl_mac_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb) + IWL_DEBUG_MAC80211(priv, "leave\n"); + spin_unlock_irqrestore(&priv->lock, flags); + +- iwl_reset_qos(priv); +- + priv->cfg->ops->lib->post_associate(priv); + +- + return 0; + } + EXPORT_SYMBOL(iwl_mac_beacon_update); +@@ -2396,6 +2279,15 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed) + iwl_set_tx_power(priv, conf->power_level, false); + } + ++ if (changed & IEEE80211_CONF_CHANGE_QOS) { ++ bool qos_active = !!(conf->flags & IEEE80211_CONF_QOS); ++ ++ spin_lock_irqsave(&priv->lock, flags); ++ priv->qos_data.qos_active = qos_active; ++ iwl_update_qos(priv); ++ spin_unlock_irqrestore(&priv->lock, flags); ++ } ++ + if (!iwl_is_ready(priv)) { + IWL_DEBUG_MAC80211(priv, "leave - not ready\n"); + goto out; +@@ -2430,8 +2322,6 @@ void iwl_mac_reset_tsf(struct ieee80211_hw *hw) + memset(&priv->current_ht_config, 0, sizeof(struct iwl_ht_config)); + spin_unlock_irqrestore(&priv->lock, flags); + +- iwl_reset_qos(priv); +- + spin_lock_irqsave(&priv->lock, flags); + priv->assoc_id = 0; + priv->assoc_capability = 0; +diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h +index 9d7a68f..bc04b43 100644 +--- a/drivers/net/wireless/iwlwifi/iwl-core.h ++++ b/drivers/net/wireless/iwlwifi/iwl-core.h +@@ -316,8 +316,7 @@ struct iwl_cfg { + struct ieee80211_hw *iwl_alloc_all(struct iwl_cfg *cfg, + struct ieee80211_ops *hw_ops); + void iwl_hw_detect(struct iwl_priv *priv); +-void iwl_reset_qos(struct iwl_priv *priv); +-void iwl_activate_qos(struct iwl_priv *priv, u8 force); ++void iwl_activate_qos(struct iwl_priv *priv); + int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue, + const struct ieee80211_tx_queue_params *params); + void iwl_set_rxon_hwcrypto(struct iwl_priv *priv, int hw_decrypt); +diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h +index 46a5740..7f38d2d 100644 +--- a/drivers/net/wireless/iwlwifi/iwl-dev.h ++++ b/drivers/net/wireless/iwlwifi/iwl-dev.h +@@ -476,30 +476,9 @@ struct iwl_ht_config { + u8 non_GF_STA_present; + }; + +-union iwl_qos_capabity { +- struct { +- u8 edca_count:4; /* bit 0-3 */ +- u8 q_ack:1; /* bit 4 */ +- u8 queue_request:1; /* bit 5 */ +- u8 txop_request:1; /* bit 6 */ +- u8 reserved:1; /* bit 7 */ +- } q_AP; +- struct { +- u8 acvo_APSD:1; /* bit 0 */ +- u8 acvi_APSD:1; /* bit 1 */ +- u8 ac_bk_APSD:1; /* bit 2 */ +- u8 ac_be_APSD:1; /* bit 3 */ +- u8 q_ack:1; /* bit 4 */ +- u8 max_len:2; /* bit 5-6 */ +- u8 more_data_ack:1; /* bit 7 */ +- } q_STA; +- u8 val; +-}; +- + /* QoS structures */ + struct iwl_qos_info { + int qos_active; +- union iwl_qos_capabity qos_cap; + struct iwl_qosparam_cmd def_qos_parm; + }; + +diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c +index 4995134..24c240d 100644 +--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c ++++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c +@@ -3140,8 +3140,6 @@ void iwl3945_post_associate(struct iwl_priv *priv) + break; + } + +- iwl_activate_qos(priv, 0); +- + /* we have just associated, don't start scan too early */ + priv->next_scan_jiffies = jiffies + IWL_DELAY_NEXT_SCAN; + } +@@ -3889,11 +3887,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv) + priv->iw_mode = NL80211_IFTYPE_STATION; + priv->missed_beacon_threshold = IWL_MISSED_BEACON_THRESHOLD_DEF; + +- iwl_reset_qos(priv); +- +- priv->qos_data.qos_active = 0; +- priv->qos_data.qos_cap.val = 0; +- + priv->rates_mask = IWL_RATES_MASK; + priv->tx_power_user_lmt = IWL_DEFAULT_TX_POWER; + +-- +1.7.1 + diff --git a/debian/patches/bugfix/all/mac80211-explicitly-disable-enable-QoS.patch b/debian/patches/bugfix/all/mac80211-explicitly-disable-enable-QoS.patch new file mode 100644 index 000000000..edf617efb --- /dev/null +++ b/debian/patches/bugfix/all/mac80211-explicitly-disable-enable-QoS.patch @@ -0,0 +1,97 @@ +From: Stanislaw Gruszka +Date: Mon, 29 Mar 2010 12:18:34 +0200 +Subject: [PATCH] mac80211: explicitly disable/enable QoS + +commit e1b3ec1a2a336c328c336cfa5485a5f0484cc90d upstream. + +Add interface to disable/enable QoS (aka WMM or WME). Currently drivers +enable it explicitly when ->conf_tx method is called, and newer disable. +Disabling is needed for some APs, which do not support QoS, such +we should send QoS frames to them. + +Signed-off-by: Stanislaw Gruszka +Signed-off-by: John W. Linville +--- + include/net/mac80211.h | 5 +++++ + net/mac80211/mlme.c | 9 ++++++++- + net/mac80211/util.c | 5 +++++ + 3 files changed, 18 insertions(+), 1 deletions(-) + +diff --git a/include/net/mac80211.h b/include/net/mac80211.h +index ecaae10..dcf3c5f 100644 +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -587,11 +587,15 @@ struct ieee80211_rx_status { + * may turn the device off as much as possible. Typically, this flag will + * be set when an interface is set UP but not associated or scanning, but + * it can also be unset in that case when monitor interfaces are active. ++ * @IEEE80211_CONF_QOS: Enable 802.11e QoS also know as WMM (Wireless ++ * Multimedia). On some drivers (iwlwifi is one of know) we have ++ * to enable/disable QoS explicitly. + */ + enum ieee80211_conf_flags { + IEEE80211_CONF_MONITOR = (1<<0), + IEEE80211_CONF_PS = (1<<1), + IEEE80211_CONF_IDLE = (1<<2), ++ IEEE80211_CONF_QOS = (1<<3), + }; + + +@@ -616,6 +620,7 @@ enum ieee80211_conf_changed { + IEEE80211_CONF_CHANGE_CHANNEL = BIT(6), + IEEE80211_CONF_CHANGE_RETRY_LIMITS = BIT(7), + IEEE80211_CONF_CHANGE_IDLE = BIT(8), ++ IEEE80211_CONF_CHANGE_QOS = BIT(9), + }; + + /** +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c +index 65eafda..c686d1b 100644 +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -586,6 +586,9 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, + int count; + u8 *pos, uapsd_queues = 0; + ++ if (!local->ops->conf_tx) ++ return; ++ + if (local->hw.queues < 4) + return; + +@@ -660,11 +663,15 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local, + params.aifs, params.cw_min, params.cw_max, params.txop, + params.uapsd); + #endif +- if (drv_conf_tx(local, queue, ¶ms) && local->ops->conf_tx) ++ if (drv_conf_tx(local, queue, ¶ms)) + printk(KERN_DEBUG "%s: failed to set TX queue " + "parameters for queue %d\n", + wiphy_name(local->hw.wiphy), queue); + } ++ ++ /* enable WMM or activate new settings */ ++ local->hw.conf.flags |= IEEE80211_CONF_QOS; ++ drv_config(local, IEEE80211_CONF_CHANGE_QOS); + } + + static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, +diff --git a/net/mac80211/util.c b/net/mac80211/util.c +index c453226..7b2c170 100644 +--- a/net/mac80211/util.c ++++ b/net/mac80211/util.c +@@ -796,6 +796,11 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata) + + drv_conf_tx(local, queue, &qparam); + } ++ ++ /* after reinitialize QoS TX queues setting to default, ++ * disable QoS at all */ ++ local->hw.conf.flags &= ~IEEE80211_CONF_QOS; ++ drv_config(local, IEEE80211_CONF_CHANGE_QOS); + } + + void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, +-- +1.7.1 + diff --git a/debian/patches/bugfix/ia64/hardcode-arch-script-output.patch b/debian/patches/bugfix/ia64/hardcode-arch-script-output.patch index 7fb311b1e..f11750b11 100644 --- a/debian/patches/bugfix/ia64/hardcode-arch-script-output.patch +++ b/debian/patches/bugfix/ia64/hardcode-arch-script-output.patch @@ -1,6 +1,8 @@ ---- linux-source-2.6.18/arch/ia64/Makefile.orig 2007-01-03 17:26:31.000000000 -0700 -+++ linux-source-2.6.18/arch/ia64/Makefile 2007-01-03 17:57:52.000000000 -0700 -@@ -28,16 +28,7 @@ +diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile +index e7cbaa0..c8af869 100644 +--- a/arch/ia64/Makefile ++++ b/arch/ia64/Makefile +@@ -30,16 +30,7 @@ cflags-y := -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f12-f15,f32-f127 \ -falign-functions=32 -frename-registers -fno-optimize-sibling-calls CFLAGS_KERNEL := -mconstant-gp @@ -16,9 +18,9 @@ -endif +KBUILD_CPPFLAGS += -DHAVE_WORKING_TEXT_ALIGN -DHAVE_MODEL_SMALL_ATTRIBUTE -DHAVE_SERIALIZE_DIRECTIVE - ifeq ($(call cc-version),0304) - cflags-$(CONFIG_ITANIUM) += -mtune=merced -@@ -67,7 +58,7 @@ + KBUILD_CFLAGS += $(cflags-y) + head-y := arch/ia64/kernel/head.o arch/ia64/kernel/init_task.o +@@ -69,7 +60,7 @@ boot := arch/ia64/hp/sim/boot PHONY += boot compressed check @@ -27,7 +29,7 @@ compressed: vmlinux.gz -@@ -76,9 +67,6 @@ +@@ -78,9 +69,6 @@ vmlinuz: vmlinux.gz vmlinux.gz: vmlinux $(Q)$(MAKE) $(build)=$(boot) $@ @@ -37,9 +39,11 @@ archclean: $(Q)$(MAKE) $(clean)=$(boot) -@@ -94,5 +82,4 @@ +@@ -96,7 +84,6 @@ define archhelp echo '* compressed - Build compressed kernel image' echo ' install - Install compressed kernel image' echo ' boot - Build vmlinux and bootloader for Ski simulator' - echo '* unwcheck - Check vmlinux for invalid unwind info' endef + + archprepare: make_nr_irqs_h FORCE diff --git a/debian/patches/bugfix/parisc/clear-fp-exception-flag-on-SIGFPE.patch b/debian/patches/bugfix/parisc/clear-fp-exception-flag-on-SIGFPE.patch new file mode 100644 index 000000000..7de2df346 --- /dev/null +++ b/debian/patches/bugfix/parisc/clear-fp-exception-flag-on-SIGFPE.patch @@ -0,0 +1,33 @@ +From 550f0d922286556c7ea43974bb7921effb5a5278 Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Mon, 3 May 2010 20:44:21 +0000 +Subject: [PATCH] parisc: clear floating point exception flag on SIGFPE signal + +Clear the floating point exception flag before returning to +user space. This is needed, else the libc trampoline handler +may hit the same SIGFPE again while building up a trampoline +to a signal handler. + +Fixes debian bug #559406. + +Signed-off-by: Helge Deller +Signed-off-by: Kyle McMartin +--- + arch/parisc/math-emu/decode_exc.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/arch/parisc/math-emu/decode_exc.c b/arch/parisc/math-emu/decode_exc.c +index 3ca1c61..27a7492 100644 +--- a/arch/parisc/math-emu/decode_exc.c ++++ b/arch/parisc/math-emu/decode_exc.c +@@ -342,6 +342,7 @@ decode_fpu(unsigned int Fpu_register[], unsigned int trap_counts[]) + return SIGNALCODE(SIGFPE, FPE_FLTINV); + case DIVISIONBYZEROEXCEPTION: + update_trap_counts(Fpu_register, aflags, bflags, trap_counts); ++ Clear_excp_register(exception_index); + return SIGNALCODE(SIGFPE, FPE_FLTDIV); + case INEXACTEXCEPTION: + update_trap_counts(Fpu_register, aflags, bflags, trap_counts); +-- +1.7.1 + diff --git a/debian/patches/bugfix/sh4/fix-sh_tmu.patch b/debian/patches/bugfix/sh4/fix-sh_tmu.patch new file mode 100644 index 000000000..7e96684f5 --- /dev/null +++ b/debian/patches/bugfix/sh4/fix-sh_tmu.patch @@ -0,0 +1,61 @@ +From: Aurelien Jarno +Date: Mon, 31 May 2010 21:45:48 +0000 (+0000) +Subject: clocksource: sh_tmu: compute mult and shift before registration + +commit 66f49121ffa41a19c59965b31b046d8368fec3c7 upstream. + +clocksource: sh_tmu: compute mult and shift before registration + +Since commit 98962465ed9e6ea99c38e0af63fe1dcb5a79dc25 ("nohz: Prevent +clocksource wrapping during idle"), the CPU of an R2D board never goes +to idle. This commit assumes that mult and shift are assigned before +the clocksource is registered. As a consequence the safe maximum sleep +time is negative and the CPU never goes into idle. + +This patch fixes the problem by moving mult and shift initialization +from sh_tmu_clocksource_enable() to sh_tmu_register_clocksource(). + +Signed-off-by: Aurelien Jarno +Cc: stable@kernel.org +Signed-off-by: Paul Mundt +--- + +diff --git a/drivers/clocksource/sh_tmu.c b/drivers/clocksource/sh_tmu.c +index 8e44e14..de71590 100644 +--- a/drivers/clocksource/sh_tmu.c ++++ b/drivers/clocksource/sh_tmu.c +@@ -199,16 +199,8 @@ static cycle_t sh_tmu_clocksource_read(struct clocksource *cs) + static int sh_tmu_clocksource_enable(struct clocksource *cs) + { + struct sh_tmu_priv *p = cs_to_sh_tmu(cs); +- int ret; +- +- ret = sh_tmu_enable(p); +- if (ret) +- return ret; + +- /* TODO: calculate good shift from rate and counter bit width */ +- cs->shift = 10; +- cs->mult = clocksource_hz2mult(p->rate, cs->shift); +- return 0; ++ return sh_tmu_enable(p); + } + + static void sh_tmu_clocksource_disable(struct clocksource *cs) +@@ -228,6 +220,16 @@ + cs->disable = sh_tmu_clocksource_disable; + cs->mask = CLOCKSOURCE_MASK(32); + cs->flags = CLOCK_SOURCE_IS_CONTINUOUS; ++ ++ /* clk_get_rate() needs an enabled clock */ ++ clk_enable(p->clk); ++ /* channel will be configured at parent clock / 4 */ ++ p->rate = clk_get_rate(p->clk) / 4; ++ clk_disable(p->clk); ++ /* TODO: calculate good shift from rate and counter bit width */ ++ cs->shift = 10; ++ cs->mult = clocksource_hz2mult(p->rate, cs->shift); ++ + pr_info("sh_tmu: %s used as clock source\n", cs->name); + clocksource_register(cs); + return 0; diff --git a/debian/patches/features/all/revert-ipv4-Make-INET_LRO-a-bool-instead-of-tristate.patch b/debian/patches/features/all/revert-ipv4-Make-INET_LRO-a-bool-instead-of-tristate.patch new file mode 100644 index 000000000..7bea4c7bd --- /dev/null +++ b/debian/patches/features/all/revert-ipv4-Make-INET_LRO-a-bool-instead-of-tristate.patch @@ -0,0 +1,34 @@ +From: Ben Hutchings +Date: Sat, 5 Jun 2010 00:42:57 +0100 +Subject: [PATCH] Revert "ipv4: Make INET_LRO a bool instead of tristate." + +This reverts commit e81963b180ac502fda0326edf059b1e29cdef1a2. + +This code is now deprecated in favour of GRO, and only a few drivers +use it. For Debian kernels (and probably other distribution kernels) +it should be built as a module. + +The original change to prevent building it as a module was made in an +attempt to avoid the case where some dependents are set to y and some +to m, and INET_LRO can be set to m rather than y. However, the +Kconfig system will now reliably set INET_LRO=y in this case. +--- + net/ipv4/Kconfig | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig +index 70491d9..483d427 100644 +--- a/net/ipv4/Kconfig ++++ b/net/ipv4/Kconfig +@@ -398,7 +398,7 @@ config INET_XFRM_MODE_BEET + If unsure, say Y. + + config INET_LRO +- bool "Large Receive Offload (ipv4/tcp)" ++ tristate "Large Receive Offload (ipv4/tcp)" + default y + ---help--- + Support for Large Receive Offload (ipv4/tcp). +-- +1.7.1 + diff --git a/debian/patches/features/arm/ts41x-export-jp1.patch b/debian/patches/features/arm/ts41x-export-jp1.patch new file mode 100644 index 000000000..b7f0131a0 --- /dev/null +++ b/debian/patches/features/arm/ts41x-export-jp1.patch @@ -0,0 +1,29 @@ +Kirkwood: Export GPIO indicating jumper setting of JP1 + +Export GPIO 45 which is used to indicate the setting of the JP1 +jumper. This is useful for userland tools, such as qcontrol, to +see whether the LCD or a serial console is connected. + +Signed-off-by: Martin Michlmayr +[bwh: Adjust context for 2.6.34] + +--- a/arch/arm/mach-kirkwood/ts41x-setup.c 2010-05-21 19:27:57.000000000 +0000 ++++ b/arch/arm/mach-kirkwood/ts41x-setup.c 2010-05-21 19:28:34.000000000 +0000 +@@ -32,6 +33,8 @@ + #include "mpp.h" + #include "tsx1x-common.h" + ++#define QNAP_TS41X_JUMPER_JP1 45 ++ + static struct i2c_board_info __initdata qnap_ts41x_i2c_rtc = { + I2C_BOARD_INFO("s35390a", 0x30), + }; +@@ -230,6 +233,8 @@ + + pm_power_off = qnap_tsx1x_power_off; + ++ if (gpio_request(QNAP_TS41X_JUMPER_JP1, "JP1") == 0) ++ gpio_export(QNAP_TS41X_JUMPER_JP1, 0); + } + + static int __init ts41x_pci_init(void) diff --git a/debian/patches/series/1~experimental.2 b/debian/patches/series/1~experimental.2 index 048235683..660fa867e 100644 --- a/debian/patches/series/1~experimental.2 +++ b/debian/patches/series/1~experimental.2 @@ -5,3 +5,12 @@ + features/all/RTC-rtc-cmos-Fix-binary-mode-support.patch + features/mips/MIPS-Loongson-Define-rtc-device-on-MC146818-systems.patch + debian/revert-removal-of-r8192sU_HWImg-c.patch ++ bugfix/ia64/hardcode-arch-script-output.patch ++ bugfix/all/mac80211-explicitly-disable-enable-QoS.patch ++ bugfix/all/iwlwifi-manage-QoS-by-mac-stack.patch ++ bugfix/all/ext4-Conditionally-define-compat-ioctl-numbers.patch ++ bugfix/all/ext4-Fix-compat-EXT4_IOC_ADD_GROUP.patch ++ features/arm/ts41x-export-jp1.patch ++ bugfix/parisc/clear-fp-exception-flag-on-SIGFPE.patch ++ bugfix/sh4/fix-sh_tmu.patch ++ features/all/revert-ipv4-Make-INET_LRO-a-bool-instead-of-tristate.patch diff --git a/debian/rules b/debian/rules index 1be2077f7..4c1553ac7 100755 --- a/debian/rules +++ b/debian/rules @@ -51,12 +51,12 @@ else endif maintainerclean: - rm -f debian/config.defines.dump debian/control debian/control.md5sum debian/rules.gen debian/bin/patch.* debian/linux-* + rm -f debian/config.defines.dump debian/control debian/control.md5sum debian/rules.gen debian/bin/patch.* rm -rf $(filter-out debian .svk .svn, $(wildcard * .[^.]*)) clean: debian/control dh_testdir - rm -rf $(BUILD_DIR) $(STAMPS_DIR) debian/lib/python/debian_linux/*.pyc + rm -rf $(BUILD_DIR) $(STAMPS_DIR) debian/lib/python/debian_linux/*.pyc debian/linux-headers-* debian/linux-image-* dh_clean binary-indep: $(STAMPS_DIR)/source-base diff --git a/debian/rules.real b/debian/rules.real index 1c8ad1510..82a25e359 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -98,7 +98,7 @@ $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET): $(STAMPS_DIR)/source $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): CONFIG=$(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR) $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): SOURCE_DIR=$(BUILD_DIR)/source_$(ARCH)_$(FEATURESET) $(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): DIR=$(BUILD_DIR)/build_$(ARCH)_$(FEATURESET)_$(FLAVOUR) -$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR) $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET) +$(STAMPS_DIR)/setup_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/source_$(ARCH)_$(FEATURESET) $(BUILD_DIR)/config.$(ARCH)_$(FEATURESET)_$(FLAVOUR) rm -rf '$(DIR)' mkdir '$(DIR)' cp '$(CONFIG)' '$(DIR)/.config' @@ -465,8 +465,8 @@ install-image-dbg_$(ARCH)_$(FEATURESET)_$(FLAVOUR): $(STAMPS_DIR)/build_$(ARCH)_ dh_testdir dh_testroot dh_prep - dh_installdirs usr/lib/debug - install -m644 $(DIR)/vmlinux $(DEBUG_DIR)/vmlinux-$(REAL_VERSION) + dh_installdirs usr/lib/debug usr/lib/debug/boot + install -m644 $(DIR)/vmlinux $(DEBUG_DIR)/boot/vmlinux-$(REAL_VERSION) ifeq ($(MODULES),True) +$(MAKE_CLEAN) -C $(DIR) modules_install INSTALL_MOD_PATH='$(CURDIR)'/$(DEBUG_DIR) rm $(DEBUG_DIR)/lib/modules/*/{build,source,modules.*} @@ -483,7 +483,7 @@ install-patch: dh_testroot dh_prep dh_installdirs '$(pbase)/apply' '$(pbase)/debian' '$(pbase)/unpatch' - dh_install debian/patches/* '$(pbase)/debian' + dh_install -X.svn debian/patches/* '$(pbase)/debian' install debian/bin/patch.apply '$(pfull)/apply/debian' install debian/templates/patch.unpatch '$(pfull)/unpatch/debian' find '$(pfull)/debian' ! -path '*/series/*' -type f -execdir bzip2 '{}' ';' -execdir chmod 644 '{}.bz2' ';'