rpms/kernel/devel kernel.spec, 1.824, 1.825 linux-2.6-wireless.patch, 1.47, 1.48
John W. Linville (linville)
fedora-extras-commits at redhat.com
Wed Jul 30 18:56:29 UTC 2008
Author: linville
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv2750
Modified Files:
kernel.spec linux-2.6-wireless.patch
Log Message:
Upstream wireless fixes from 2008-07-29
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.824
retrieving revision 1.825
diff -u -r1.824 -r1.825
--- kernel.spec 30 Jul 2008 16:27:51 -0000 1.824
+++ kernel.spec 30 Jul 2008 18:55:59 -0000 1.825
@@ -1091,9 +1091,9 @@
# wake up links that have been put to sleep by BIOS (#436099)
ApplyPatch linux-2.6-libata-force-hardreset-in-sleep-mode.patch
-# wireless patches headed for 2.6.26
-#ApplyPatch linux-2.6-wireless.patch
# wireless patches headed for 2.6.27
+ApplyPatch linux-2.6-wireless.patch
+# wireless patches headed for 2.6.28
#ApplyPatch linux-2.6-wireless-pending.patch
# Add misc wireless bits from upstream wireless tree
@@ -1710,6 +1710,10 @@
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
+* Wed Jul 30 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-07-29
+ (http://marc.info/?l=linux-wireless&m=121737750023195&w=2)
+
* Wed Jul 30 2008 Mark McLoughlin <markmc at redhat.com>
- Replace kernel-xen in DEFAULTKERNEL (#456558)
linux-2.6-wireless.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.47 -r 1.48 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless.patch,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- linux-2.6-wireless.patch 10 Jul 2008 17:28:14 -0000 1.47
+++ linux-2.6-wireless.patch 30 Jul 2008 18:55:59 -0000 1.48
@@ -1,521 +1,3578 @@
-commit 814feefa859a736d29d0700d49debf13904b429f
-Author: Ihar Hrachyshka <ihar.hrachyshka at promwad.com>
-Date: Wed Jul 9 09:29:58 2008 +0300
+commit 56a6d13dfd49d90d72a1a962246206719dd9d143
+Author: Luis Carlos Cobo <luisca at cozybit.com>
+Date: Tue Jul 29 19:59:31 2008 +0200
- libertas: fix memory alignment problems on the blackfin
+ mac80211: fix mesh beaconing
- Fixing unaligned memory access on the blackfin architecture.
+ This patch fixes mesh beaconing, which was broken by "mac80211: revamp
+ beacon configuration".
- Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka at promwad.com>
+ Signed-off-by: Luis Carlos Cobo <luisca at cozybit.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 86229f0c7b4e065f51b5572a8a61801e281740a0
-Author: Luis Carlos Cobo <luisca at cozybit.com>
-Date: Tue Jul 8 16:19:21 2008 +0200
+commit 77bbadd5ea893f364a0d1879723037678a03725c
+Author: Vegard Nossum <vegard.nossum at gmail.com>
+Date: Tue Jul 29 13:31:47 2008 +0200
+
+ PS3: gelic: use unsigned long for irqflags
+
+ The semantic patch I used was this:
+
+ @@
+ expression lock;
+ identifier flags;
+ expression subclass;
+ @@
+
+ - unsigned int flags;
+ + unsigned long flags;
+
+ ...
+
+ <+...
+
+ (
+ spin_lock_irqsave(lock, flags)
+ |
+ _spin_lock_irqsave(lock)
+ |
+ spin_unlock_irqrestore(lock, flags)
+ |
+ _spin_unlock_irqrestore(lock, flags)
+ |
+ read_lock_irqsave(lock, flags)
+ |
+ _read_lock_irqsave(lock)
+ |
+ read_unlock_irqrestore(lock, flags)
+ |
+ _read_unlock_irqrestore(lock, flags)
+ |
+ write_lock_irqsave(lock, flags)
+ |
+ _write_lock_irqsave(lock)
+ |
+ write_unlock_irqrestore(lock, flags)
+ |
+ _write_unlock_irqrestore(lock, flags)
+ |
+ spin_lock_irqsave_nested(lock, flags, subclass)
+ |
+ _spin_lock_irqsave_nested(lock, subclass)
+ |
+ spin_unlock_irqrestore(lock, flags)
+ |
+ _spin_unlock_irqrestore(lock, flags)
+ |
+ _raw_spin_lock_flags(lock, flags)
+ |
+ __raw_spin_lock_flags(lock, flags)
+ )
+
+ ...+>
+
+ This patch was generated using the Coccinelle framework.
+
+ Cc: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+ Cc: Julia Lawall <julia at diku.dk>
+ Cc: Alexey Dobriyan <adobriyan at gmail.com>
+ Signed-off-by: Vegard Nossum <vegard.nossum at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 14db74bcc3f7a779cf395a47e26b06a28207571a
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date: Tue Jul 29 13:22:52 2008 +0200
+
+ mac80211: fix cfg80211 hooks for master interface
+
+ The master interface is a virtual interface that is registered
+ to mac80211, changing that does not seem like a good idea at
+ the moment. However, since it has no sdata, we cannot accept
+ any configuration for it. This patch makes the cfg80211 hooks
+ reject any such attempt.
+
+ Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit bba95fefb8e31f4799652666d05a4a9aad56e492
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date: Tue Jul 29 13:22:51 2008 +0200
+
+ nl80211: fix dump callbacks
+
+ Julius Volz pointed out that the dump callbacks in nl80211 were
+ broken and fixed one of them. This patch fixes the other three
+ and also addresses the TODOs there.
+
+ Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Cc: Julius Volz <juliusv at google.com>
+ Cc: Thomas Graf <tgraf at suug.ch>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit d0f09804144fd9471a13cf4d80e66842c7fa114f
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date: Tue Jul 29 11:32:07 2008 +0200
+
+ mac80211: partially fix skb->cb use
+
+ This patch fixes mac80211 to not use the skb->cb over the queue step
+ from virtual interfaces to the master. The patch also, for now,
+ disables aggregation because that would still require requeuing,
+ will fix that in a separate patch. There are two other places (software
+ requeue and powersaving stations) where requeue can happen, but that is
+ not currently used by any drivers/not possible to use respectively.
+
+ Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 0ccd58fc03f40529f66190b1a41e92a732d2bda8
+Author: Larry Finger <Larry.Finger at lwfinger.net>
+Date: Mon Jul 28 22:25:08 2008 -0500
+
+ rtl8187: Improve wireless statistics for RTL8187B
+
+ Wireless statistics produced by the RTL8187B driver are not particularly
+ informative about the strength of the received signal. From the data sheet
+ provided by Realtek, I discovered that certain parts of the RX header
+ should have the information necessary to calculate signal quality and
+ strength. With testing, it became clear that most of these quantities were
+ very jittery - only the AGC correlated with the signals expected from nearby
+ AP's. As a result, the quality and strength are derived from the agc value.
+ The scaling has been determined so that the numbers are close to those
+ obtained by b43 under the same conditions. The results are qualitatively
+ correct.
+
+ Statistics derived for the RTL8187 have not been changed.
+
+ The RX header variables have been renamed to match the quantites described
+ in the Realtek data sheet.
+
+ Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 1f690d7b549ef9c7424536475501885dd5b54930
+Author: Larry Finger <Larry.Finger at lwfinger.net>
+Date: Mon Jul 28 22:08:18 2008 -0500
+
+ rtl8187: Fix for TX sequence number problem
+
+ "mac80211: fix TX sequence numbers" broke rtl8187. This
+ patch makes the same kind of fix that was done for rt2x00. Note that
+ this code will have to be reworked for proper sequence numbers on beacons.
+ In addition, the sequence number has been placed in the hardware state,
+ not the vif state.
+
+ Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 5422399518e8142198df888aab00acdac251f754
+Author: Rami Rosen <ramirose at gmail.com>
+Date: Thu Jul 24 10:40:37 2008 +0300
+
+ mac80211: append CONFIG_ to MAC80211_VERBOSE_PS_DEBUG in net/mac80211/tx.c.
+
+ In net/mac80211/tx.c, there are some #ifdef which checks
+ MAC80211_VERBOSE_PS_DEBUG
+ (which in fact is never set) instead of
+ CONFIG_MAC80211_VERBOSE_PS_DEBUG, as should be.
+
+ This patch replaces MAC80211_VERBOSE_PS_DEBUG with
+ CONFIG_MAC80211_VERBOSE_PS_DEBUG in these #ifdef commands in
+ net/mac80211/tx.c.
+
[...3621 lines suppressed...]
+@@ -1016,7 +1037,7 @@ static int nl80211_get_station(struct sk
+
+ mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
+
+@@ -1112,7 +1133,7 @@ static int nl80211_set_station(struct sk
+ params.plink_action =
+ nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]);
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
+
+@@ -1172,7 +1193,7 @@ static int nl80211_new_station(struct sk
+ ¶ms.station_flags))
+ return -EINVAL;
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
+
+@@ -1207,7 +1228,7 @@ static int nl80211_del_station(struct sk
+ if (info->attrs[NL80211_ATTR_MAC])
+ mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
+
+@@ -1277,68 +1298,78 @@ static int nl80211_send_mpath(struct sk_
+ }
+
+ static int nl80211_dump_mpath(struct sk_buff *skb,
+- struct netlink_callback *cb)
++ struct netlink_callback *cb)
+ {
+- int wp_idx = 0;
+- int if_idx = 0;
+- int sta_idx = cb->args[2];
+- int wp_start = cb->args[0];
+- int if_start = cb->args[1];
+ struct mpath_info pinfo;
+ struct cfg80211_registered_device *dev;
+- struct wireless_dev *wdev;
++ struct net_device *netdev;
+ u8 dst[ETH_ALEN];
+ u8 next_hop[ETH_ALEN];
++ int ifidx = cb->args[0];
++ int path_idx = cb->args[1];
+ int err;
+- int exit = 0;
+
+- /* TODO: filter by device */
+- mutex_lock(&cfg80211_drv_mutex);
+- list_for_each_entry(dev, &cfg80211_drv_list, list) {
+- if (exit)
++ if (!ifidx) {
++ err = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize,
++ nl80211_fam.attrbuf, nl80211_fam.maxattr,
++ nl80211_policy);
++ if (err)
++ return err;
++
++ if (!nl80211_fam.attrbuf[NL80211_ATTR_IFINDEX])
++ return -EINVAL;
++
++ ifidx = nla_get_u32(nl80211_fam.attrbuf[NL80211_ATTR_IFINDEX]);
++ if (!ifidx)
++ return -EINVAL;
++ }
++
++ netdev = dev_get_by_index(&init_net, ifidx);
++ if (!netdev)
++ return -ENODEV;
++
++ dev = cfg80211_get_dev_from_ifindex(ifidx);
++ if (IS_ERR(dev)) {
++ err = PTR_ERR(dev);
++ goto out_put_netdev;
++ }
++
++ if (!dev->ops->dump_mpath) {
++ err = -ENOSYS;
++ goto out_err;
++ }
++
++ rtnl_lock();
++
++ while (1) {
++ err = dev->ops->dump_mpath(&dev->wiphy, netdev, path_idx,
++ dst, next_hop, &pinfo);
++ if (err == -ENOENT)
+ break;
+- if (++wp_idx < wp_start)
+- continue;
+- if_idx = 0;
++ if (err)
++ goto out_err_rtnl;
+
+- mutex_lock(&dev->devlist_mtx);
+- list_for_each_entry(wdev, &dev->netdev_list, list) {
+- if (exit)
+- break;
+- if (++if_idx < if_start)
+- continue;
+- if (!dev->ops->dump_mpath)
+- continue;
++ if (nl80211_send_mpath(skb, NETLINK_CB(cb->skb).pid,
++ cb->nlh->nlmsg_seq, NLM_F_MULTI,
++ netdev, dst, next_hop,
++ &pinfo) < 0)
++ goto out;
+
+- for (;; ++sta_idx) {
+- rtnl_lock();
+- err = dev->ops->dump_mpath(&dev->wiphy,
+- wdev->netdev, sta_idx, dst,
+- next_hop, &pinfo);
+- rtnl_unlock();
+- if (err) {
+- sta_idx = 0;
+- break;
+- }
+- if (nl80211_send_mpath(skb,
+- NETLINK_CB(cb->skb).pid,
+- cb->nlh->nlmsg_seq, NLM_F_MULTI,
+- wdev->netdev, dst, next_hop,
+- &pinfo) < 0) {
+- exit = 1;
+- break;
+- }
+- }
+- }
+- mutex_unlock(&dev->devlist_mtx);
++ path_idx++;
+ }
+- mutex_unlock(&cfg80211_drv_mutex);
+
+- cb->args[0] = wp_idx;
+- cb->args[1] = if_idx;
+- cb->args[2] = sta_idx;
+
+- return skb->len;
++ out:
++ cb->args[1] = path_idx;
++ err = skb->len;
++ out_err_rtnl:
++ rtnl_unlock();
++ out_err:
++ cfg80211_put_dev(dev);
++ out_put_netdev:
++ dev_put(netdev);
++
++ return err;
+ }
+
+ static int nl80211_get_mpath(struct sk_buff *skb, struct genl_info *info)
+@@ -1358,7 +1389,7 @@ static int nl80211_get_mpath(struct sk_b
+
+ dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
+
+@@ -1411,7 +1442,7 @@ static int nl80211_set_mpath(struct sk_b
+ dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
+ next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]);
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
+
+@@ -1446,7 +1477,7 @@ static int nl80211_new_mpath(struct sk_b
+ dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
+ next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]);
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
+
+@@ -1475,7 +1506,7 @@ static int nl80211_del_mpath(struct sk_b
+ if (info->attrs[NL80211_ATTR_MAC])
+ dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
+
+- err = get_drv_dev_by_info_ifindex(info, &drv, &dev);
++ err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
+ if (err)
+ return err;
More information about the scm-commits
mailing list