rpms/kernel/F-8 linux-2.6-sata-eeepc-faster.patch, NONE, 1.1 linux-2.6-wireless-fixups.patch, NONE, 1.1 kernel.spec, 1.441, 1.442 linux-2.6-acpi-eeepc-hotkey.patch, 1.2, 1.3 linux-2.6-at76.patch, 1.8, 1.9 linux-2.6-lirc.patch, 1.4, 1.5 linux-2.6-uvcvideo.patch, 1.1, 1.2 linux-2.6-wireless-pending.patch, 1.43, 1.44 linux-2.6-wireless.patch, 1.36, 1.37 linux-2.6-acpi-disable-stray-interrupt-1.patch, 1.1, NONE linux-2.6-acpi-disable-stray-interrupt-2.patch, 1.1, NONE linux-2.6-acpi-video-backlight-rationalize.patch, 1.2, NONE linux-2.6-acpi_ec_early_init_fix.patch, 1.3, NONE linux-2.6-ath5k-use-soft-wep.patch, 1.1, NONE linux-2.6-bcm43xx-pci-neuter.patch, 1.2, NONE linux-2.6-cfg80211-extras.patch, 1.4, NONE linux-2.6-ps3_gelic_wireless.patch, 1.6, NONE linux-2.6-rndis_host-fixes.patch, 1.1, NONE linux-2.6-rndis_wlan.patch, 1.5, NONE linux-2.6-wireless-pending-fixups.patch, 1.4, NONE linux-2.6-wireless-pending-too.patch, 1.10, NONE linux-2.6-zd1211rw-module-alias.patch, 1.1, NONE
Chuck Ebbert (cebbert)
fedora-extras-commits at redhat.com
Wed May 21 21:23:40 UTC 2008
Author: cebbert
Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv27191
Modified Files:
kernel.spec linux-2.6-acpi-eeepc-hotkey.patch
linux-2.6-at76.patch linux-2.6-lirc.patch
linux-2.6-uvcvideo.patch linux-2.6-wireless-pending.patch
linux-2.6-wireless.patch
Added Files:
linux-2.6-sata-eeepc-faster.patch
linux-2.6-wireless-fixups.patch
Removed Files:
linux-2.6-acpi-disable-stray-interrupt-1.patch
linux-2.6-acpi-disable-stray-interrupt-2.patch
linux-2.6-acpi-video-backlight-rationalize.patch
linux-2.6-acpi_ec_early_init_fix.patch
linux-2.6-ath5k-use-soft-wep.patch
linux-2.6-bcm43xx-pci-neuter.patch
linux-2.6-cfg80211-extras.patch
linux-2.6-ps3_gelic_wireless.patch
linux-2.6-rndis_host-fixes.patch linux-2.6-rndis_wlan.patch
linux-2.6-wireless-pending-fixups.patch
linux-2.6-wireless-pending-too.patch
linux-2.6-zd1211rw-module-alias.patch
Log Message:
* Wed May 21 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25.4-2
- eeepc, wireless, acpi, lirc, and uvcvideo updates for 2.6.25.
linux-2.6-sata-eeepc-faster.patch:
--- NEW FILE linux-2.6-sata-eeepc-faster.patch ---
The Asus Eee PC prints this during bootup..
ata2.00: limited to UDMA/33 due to 40-wire cable
Which is unfortunate, as it has..
ata2.00: ATA-4: SILICONMOTION SM223AC, , max UDMA/66
I believe there actually is no cable, and the flash is directly
connected to the controller.
[root at eee ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 64 MB in 3.08 seconds = 20.76 MB/sec
With the patch below it returns..
TBD
Signed-off-by: Dave Jones <davej at redhat.com>
--- linux-2.6.24.noarch/drivers/ata/ata_piix.c~ 2008-03-31 23:43:05.000000000 -0400
+++ linux-2.6.24.noarch/drivers/ata/ata_piix.c 2008-03-31 23:44:34.000000000 -0400
@@ -716,6 +716,7 @@ struct ich_laptop {
static const struct ich_laptop ich_laptop[] = {
/* devid, subvendor, subdev */
+ { 0x2653, 0x1043, 0x82d8 }, /* ICH6M on Asus Eee PC */
{ 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */
{ 0x27DF, 0x1025, 0x0102 }, /* ICH7 on Acer 5602aWLMi */
{ 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */
linux-2.6-wireless-fixups.patch:
--- NEW FILE linux-2.6-wireless-fixups.patch ---
diff -up linux-2.6.25.noarch/net/mac80211/iface.c.orig linux-2.6.25.noarch/net/mac80211/iface.c
--- linux-2.6.25.noarch/net/mac80211/iface.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/net/mac80211/iface.c 2008-05-19 17:31:10.000000000 -0400
@@ -53,15 +53,6 @@ int ieee80211_if_add(struct net_device *
if (!ndev)
return -ENOMEM;
- ndev->needed_headroom = local->tx_headroom +
- 4*6 /* four MAC addresses */
- + 2 + 2 + 2 + 2 /* ctl, dur, seq, qos */
- + 6 /* mesh */
- + 8 /* rfc1042/bridge tunnel */
- - ETH_HLEN /* ethernet hard_header_len */
- + IEEE80211_ENCRYPT_HEADROOM;
- ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
-
ret = dev_alloc_name(ndev, ndev->name);
if (ret < 0)
goto fail;
diff -up linux-2.6.25.noarch/net/mac80211/tkip.c.orig linux-2.6.25.noarch/net/mac80211/tkip.c
--- linux-2.6.25.noarch/net/mac80211/tkip.c.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/net/mac80211/tkip.c 2008-05-19 17:40:15.000000000 -0400
@@ -8,22 +8,23 @@
*/
#include <linux/kernel.h>
-#include <linux/bitops.h>
#include <linux/types.h>
#include <linux/netdevice.h>
-#include <asm/unaligned.h>
#include <net/mac80211.h>
#include "key.h"
#include "tkip.h"
#include "wep.h"
+
+/* TKIP key mixing functions */
+
+
#define PHASE1_LOOP_COUNT 8
-/*
- * 2-byte by 2-byte subset of the full AES S-box table; second part of this
- * table is identical to first part but byte-swapped
- */
+
+/* 2-byte by 2-byte subset of the full AES S-box table; second part of this
+ * table is identical to first part but byte-swapped */
static const u16 tkip_sbox[256] =
{
0xC6A5, 0xF884, 0xEE99, 0xF68D, 0xFF0D, 0xD6BD, 0xDEB1, 0x9154,
@@ -60,13 +61,53 @@ static const u16 tkip_sbox[256] =
0x82C3, 0x29B0, 0x5A77, 0x1E11, 0x7BCB, 0xA8FC, 0x6DD6, 0x2C3A,
};
-static u16 tkipS(u16 val)
+
+static inline u16 Mk16(u8 x, u8 y)
+{
+ return ((u16) x << 8) | (u16) y;
+}
+
+
+static inline u8 Hi8(u16 v)
+{
+ return v >> 8;
+}
+
+
+static inline u8 Lo8(u16 v)
+{
+ return v & 0xff;
+}
+
+
+static inline u16 Hi16(u32 v)
+{
+ return v >> 16;
+}
+
+
+static inline u16 Lo16(u32 v)
+{
+ return v & 0xffff;
+}
+
+
+static inline u16 RotR1(u16 v)
+{
+ return (v >> 1) | ((v & 0x0001) << 15);
+}
+
+
+static inline u16 tkip_S(u16 val)
{
- return tkip_sbox[val & 0xff] ^ swab16(tkip_sbox[val >> 8]);
+ u16 a = tkip_sbox[Hi8(val)];
+
+ return tkip_sbox[Lo8(val)] ^ Hi8(a) ^ (Lo8(a) << 8);
}
-/*
- * P1K := Phase1(TA, TK, TSC)
+
+
+/* P1K := Phase1(TA, TK, TSC)
* TA = transmitter address (48 bits)
* TK = dot11DefaultKeyValue or dot11KeyMappingValue (128 bits)
* TSC = TKIP sequence counter (48 bits, only 32 msb bits used)
@@ -77,22 +118,23 @@ static void tkip_mixing_phase1(const u8
{
int i, j;
- p1k[0] = tsc_IV32 & 0xFFFF;
- p1k[1] = tsc_IV32 >> 16;
- p1k[2] = get_unaligned_le16(ta + 0);
- p1k[3] = get_unaligned_le16(ta + 2);
- p1k[4] = get_unaligned_le16(ta + 4);
+ p1k[0] = Lo16(tsc_IV32);
+ p1k[1] = Hi16(tsc_IV32);
+ p1k[2] = Mk16(ta[1], ta[0]);
+ p1k[3] = Mk16(ta[3], ta[2]);
+ p1k[4] = Mk16(ta[5], ta[4]);
for (i = 0; i < PHASE1_LOOP_COUNT; i++) {
j = 2 * (i & 1);
- p1k[0] += tkipS(p1k[4] ^ get_unaligned_le16(tk + 0 + j));
- p1k[1] += tkipS(p1k[0] ^ get_unaligned_le16(tk + 4 + j));
- p1k[2] += tkipS(p1k[1] ^ get_unaligned_le16(tk + 8 + j));
- p1k[3] += tkipS(p1k[2] ^ get_unaligned_le16(tk + 12 + j));
- p1k[4] += tkipS(p1k[3] ^ get_unaligned_le16(tk + 0 + j)) + i;
+ p1k[0] += tkip_S(p1k[4] ^ Mk16(tk[ 1 + j], tk[ 0 + j]));
+ p1k[1] += tkip_S(p1k[0] ^ Mk16(tk[ 5 + j], tk[ 4 + j]));
+ p1k[2] += tkip_S(p1k[1] ^ Mk16(tk[ 9 + j], tk[ 8 + j]));
+ p1k[3] += tkip_S(p1k[2] ^ Mk16(tk[13 + j], tk[12 + j]));
+ p1k[4] += tkip_S(p1k[3] ^ Mk16(tk[ 1 + j], tk[ 0 + j])) + i;
}
}
+
static void tkip_mixing_phase2(const u16 *p1k, const u8 *tk, u16 tsc_IV16,
u8 *rc4key)
{
@@ -106,29 +148,31 @@ static void tkip_mixing_phase2(const u16
ppk[4] = p1k[4];
ppk[5] = p1k[4] + tsc_IV16;
- ppk[0] += tkipS(ppk[5] ^ get_unaligned_le16(tk + 0));
- ppk[1] += tkipS(ppk[0] ^ get_unaligned_le16(tk + 2));
- ppk[2] += tkipS(ppk[1] ^ get_unaligned_le16(tk + 4));
- ppk[3] += tkipS(ppk[2] ^ get_unaligned_le16(tk + 6));
- ppk[4] += tkipS(ppk[3] ^ get_unaligned_le16(tk + 8));
- ppk[5] += tkipS(ppk[4] ^ get_unaligned_le16(tk + 10));
- ppk[0] += ror16(ppk[5] ^ get_unaligned_le16(tk + 12), 1);
- ppk[1] += ror16(ppk[0] ^ get_unaligned_le16(tk + 14), 1);
- ppk[2] += ror16(ppk[1], 1);
- ppk[3] += ror16(ppk[2], 1);
- ppk[4] += ror16(ppk[3], 1);
- ppk[5] += ror16(ppk[4], 1);
-
- rc4key[0] = tsc_IV16 >> 8;
- rc4key[1] = ((tsc_IV16 >> 8) | 0x20) & 0x7f;
- rc4key[2] = tsc_IV16 & 0xFF;
- rc4key[3] = ((ppk[5] ^ get_unaligned_le16(tk)) >> 1) & 0xFF;
-
- rc4key += 4;
- for (i = 0; i < 6; i++)
- put_unaligned_le16(ppk[i], rc4key + 2 * i);
+ ppk[0] += tkip_S(ppk[5] ^ Mk16(tk[ 1], tk[ 0]));
+ ppk[1] += tkip_S(ppk[0] ^ Mk16(tk[ 3], tk[ 2]));
+ ppk[2] += tkip_S(ppk[1] ^ Mk16(tk[ 5], tk[ 4]));
+ ppk[3] += tkip_S(ppk[2] ^ Mk16(tk[ 7], tk[ 6]));
+ ppk[4] += tkip_S(ppk[3] ^ Mk16(tk[ 9], tk[ 8]));
+ ppk[5] += tkip_S(ppk[4] ^ Mk16(tk[11], tk[10]));
+ ppk[0] += RotR1(ppk[5] ^ Mk16(tk[13], tk[12]));
+ ppk[1] += RotR1(ppk[0] ^ Mk16(tk[15], tk[14]));
+ ppk[2] += RotR1(ppk[1]);
+ ppk[3] += RotR1(ppk[2]);
+ ppk[4] += RotR1(ppk[3]);
+ ppk[5] += RotR1(ppk[4]);
+
+ rc4key[0] = Hi8(tsc_IV16);
+ rc4key[1] = (Hi8(tsc_IV16) | 0x20) & 0x7f;
+ rc4key[2] = Lo8(tsc_IV16);
+ rc4key[3] = Lo8((ppk[5] ^ Mk16(tk[1], tk[0])) >> 1);
+
+ for (i = 0; i < 6; i++) {
+ rc4key[4 + 2 * i] = Lo8(ppk[i]);
+ rc4key[5 + 2 * i] = Hi8(ppk[i]);
+ }
}
+
/* Add TKIP IV and Ext. IV at @pos. @iv0, @iv1, and @iv2 are the first octets
* of the IV. Returns pointer to the octet following IVs (i.e., beginning of
* the packet payload). */
@@ -139,10 +183,14 @@ u8 * ieee80211_tkip_add_iv(u8 *pos, stru
*pos++ = iv1;
*pos++ = iv2;
*pos++ = (key->conf.keyidx << 6) | (1 << 5) /* Ext IV */;
- put_unaligned_le32(key->u.tkip.iv32, pos);
- return pos + 4;
+ *pos++ = key->u.tkip.iv32 & 0xff;
+ *pos++ = (key->u.tkip.iv32 >> 8) & 0xff;
+ *pos++ = (key->u.tkip.iv32 >> 16) & 0xff;
+ *pos++ = (key->u.tkip.iv32 >> 24) & 0xff;
+ return pos;
}
+
void ieee80211_tkip_gen_phase1key(struct ieee80211_key *key, u8 *ta,
u16 *phase1key)
{
@@ -180,8 +228,10 @@ void ieee80211_get_tkip_key(struct ieee8
u16 iv16;
u32 iv32;
- iv16 = data[hdr_len + 2] | (data[hdr_len] << 8);
- iv32 = get_unaligned_le32(data + hdr_len + 4);
+ iv16 = data[hdr_len] << 8;
+ iv16 += data[hdr_len + 2];
+ iv32 = data[hdr_len + 4] | (data[hdr_len + 5] << 8) |
+ (data[hdr_len + 6] << 16) | (data[hdr_len + 7] << 24);
#ifdef CONFIG_TKIP_DEBUG
printk(KERN_DEBUG "TKIP encrypt: iv16 = 0x%04x, iv32 = 0x%08x\n",
@@ -231,6 +281,7 @@ void ieee80211_tkip_encrypt_data(struct
ieee80211_wep_encrypt_data(tfm, rc4key, 16, pos, payload_len);
}
+
/* Decrypt packet payload with TKIP using @key. @pos is a pointer to the
* beginning of the buffer containing IEEE 802.11 header payload, i.e.,
* including IV, Ext. IV, real data, Michael MIC, ICV. @payload_len is the
@@ -251,7 +302,7 @@ int ieee80211_tkip_decrypt_data(struct c
iv16 = (pos[0] << 8) | pos[2];
keyid = pos[3];
- iv32 = get_unaligned_le32(pos + 4);
+ iv32 = pos[4] | (pos[5] << 8) | (pos[6] << 16) | (pos[7] << 24);
pos += 8;
#ifdef CONFIG_TKIP_DEBUG
{
@@ -358,3 +409,5 @@ int ieee80211_tkip_decrypt_data(struct c
return res;
}
+
+
diff -up linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c.orig linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c
--- linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/net/mac80211/mesh_hwmp.c 2008-05-19 17:38:26.000000000 -0400
@@ -26,7 +26,7 @@ static inline u32 u32_field_get(u8 *preq
{
if (ae)
offset += 6;
- return get_unaligned_le32(preq_elem + offset);
+ return le32_to_cpu(get_unaligned((__le32 *) (preq_elem + offset)));
}
/* HWMP IE processing macros */
diff -up linux-2.6.25.noarch/net/wireless/wext.c.orig linux-2.6.25.noarch/net/wireless/wext.c
--- linux-2.6.25.noarch/net/wireless/wext.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/net/wireless/wext.c 2008-05-19 17:31:10.000000000 -0400
@@ -1157,7 +1157,7 @@ static void rtmsg_iwinfo(struct net_devi
struct sk_buff *skb;
int err;
- if (dev_net(dev) != &init_net)
+ if (dev->nd_net != &init_net)
return;
skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC);
diff -up linux-2.6.25.noarch/net/wireless/radiotap.c.orig linux-2.6.25.noarch/net/wireless/radiotap.c
--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-05-19 17:38:26.000000000 -0400
@@ -59,21 +59,23 @@ int ieee80211_radiotap_iterator_init(
return -EINVAL;
/* sanity check for allowed length and radiotap length field */
- if (max_length < get_unaligned_le16(&radiotap_header->it_len))
+ if (max_length < le16_to_cpu(get_unaligned(&radiotap_header->it_len)))
return -EINVAL;
iterator->rtheader = radiotap_header;
- iterator->max_length = get_unaligned_le16(&radiotap_header->it_len);
+ iterator->max_length = le16_to_cpu(get_unaligned(
+ &radiotap_header->it_len));
iterator->arg_index = 0;
- iterator->bitmap_shifter = get_unaligned_le32(&radiotap_header->it_present);
+ iterator->bitmap_shifter = le32_to_cpu(get_unaligned(
+ &radiotap_header->it_present));
iterator->arg = (u8 *)radiotap_header + sizeof(*radiotap_header);
iterator->this_arg = NULL;
/* find payload start allowing for extended bitmap(s) */
if (unlikely(iterator->bitmap_shifter & (1<<IEEE80211_RADIOTAP_EXT))) {
- while (get_unaligned_le32(iterator->arg) &
- (1 << IEEE80211_RADIOTAP_EXT)) {
+ while (le32_to_cpu(get_unaligned((__le32 *)iterator->arg)) &
+ (1<<IEEE80211_RADIOTAP_EXT)) {
iterator->arg += sizeof(u32);
/*
@@ -239,8 +241,8 @@ int ieee80211_radiotap_iterator_next(
if (iterator->bitmap_shifter & 1) {
/* b31 was set, there is more */
/* move to next u32 bitmap */
- iterator->bitmap_shifter =
- get_unaligned_le32(iterator->next_bitmap);
+ iterator->bitmap_shifter = le32_to_cpu(
+ get_unaligned(iterator->next_bitmap));
iterator->next_bitmap++;
} else
/* no more bitmaps: end */
diff -up linux-2.6.25.noarch/net/wireless/core.c.orig linux-2.6.25.noarch/net/wireless/core.c
--- linux-2.6.25.noarch/net/wireless/core.c.orig 2008-05-19 17:32:53.000000000 -0400
+++ linux-2.6.25.noarch/net/wireless/core.c 2008-05-19 17:37:18.000000000 -0400
@@ -167,13 +167,13 @@ int cfg80211_dev_rename(struct cfg80211_
/* Ignore nop renames */
result = 0;
- if (strcmp(newname, dev_name(&rdev->wiphy.dev)) == 0)
+ if (strcmp(newname, rdev->wiphy.dev.bus_id) == 0)
goto out_unlock;
/* Ensure another device does not already have this name. */
list_for_each_entry(drv, &cfg80211_drv_list, list) {
result = -EINVAL;
- if (strcmp(newname, dev_name(&drv->wiphy.dev)) == 0)
+ if (strcmp(newname, drv->wiphy.dev.bus_id) == 0)
goto out_unlock;
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c
--- linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43/phy.c 2008-05-19 17:42:19.000000000 -0400
@@ -1400,7 +1400,7 @@ static void b43_phy_initg(struct b43_wld
* the value 0x7FFFFFFF here. I think that is some weird
* compiler optimization in the original driver.
* Essentially, what we do here is resetting all NRSSI LT
- * entries to -32 (see the clamp_val() in nrssi_hw_update())
+ * entries to -32 (see the limit_value() in nrssi_hw_update())
*/
b43_nrssi_hw_update(dev, 0xFFFF); //FIXME?
b43_calc_nrssi_threshold(dev);
@@ -1462,13 +1462,13 @@ static s8 b43_phy_estimate_power_out(str
switch (phy->type) {
case B43_PHYTYPE_A:
tmp += 0x80;
- tmp = clamp_val(tmp, 0x00, 0xFF);
+ tmp = limit_value(tmp, 0x00, 0xFF);
dbm = phy->tssi2dbm[tmp];
//TODO: There's a FIXME on the specs
break;
case B43_PHYTYPE_B:
case B43_PHYTYPE_G:
- tmp = clamp_val(tmp, 0x00, 0x3F);
+ tmp = limit_value(tmp, 0x00, 0x3F);
dbm = phy->tssi2dbm[tmp];
break;
default:
@@ -1527,8 +1527,8 @@ void b43_put_attenuation_into_ranges(str
break;
}
- *_rfatt = clamp_val(rfatt, rf_min, rf_max);
- *_bbatt = clamp_val(bbatt, bb_min, bb_max);
+ *_rfatt = limit_value(rfatt, rf_min, rf_max);
+ *_bbatt = limit_value(bbatt, bb_min, bb_max);
}
/* http://bcm-specs.sipsolutions.net/RecalculateTransmissionPower */
@@ -1623,7 +1623,7 @@ void b43_phy_xmitpower(struct b43_wldev
/* Get desired power (in Q5.2) */
desired_pwr = INT_TO_Q52(phy->power_level);
/* And limit it. max_pwr already is Q5.2 */
- desired_pwr = clamp_val(desired_pwr, 0, max_pwr);
+ desired_pwr = limit_value(desired_pwr, 0, max_pwr);
if (b43_debug(dev, B43_DBG_XMITPOWER)) {
b43dbg(dev->wl,
"Current TX power output: " Q52_FMT
@@ -1733,7 +1733,7 @@ static inline
f = q;
i++;
} while (delta >= 2);
- entry[index] = clamp_val(b43_tssi2dbm_ad(m1 * f, 8192), -127, 128);
+ entry[index] = limit_value(b43_tssi2dbm_ad(m1 * f, 8192), -127, 128);
return 0;
}
@@ -2259,7 +2259,7 @@ void b43_nrssi_hw_update(struct b43_wlde
for (i = 0; i < 64; i++) {
tmp = b43_nrssi_hw_read(dev, i);
tmp -= val;
- tmp = clamp_val(tmp, -32, 31);
+ tmp = limit_value(tmp, -32, 31);
b43_nrssi_hw_write(dev, i, tmp);
}
}
@@ -2276,7 +2276,7 @@ void b43_nrssi_mem_update(struct b43_wld
tmp = (i - delta) * phy->nrssislope;
tmp /= 0x10000;
tmp += 0x3A;
- tmp = clamp_val(tmp, 0, 0x3F);
+ tmp = limit_value(tmp, 0, 0x3F);
phy->nrssi_lt[i] = tmp;
}
}
@@ -2713,7 +2713,7 @@ void b43_calc_nrssi_threshold(struct b43
} else
threshold = phy->nrssi[1] - 5;
- threshold = clamp_val(threshold, 0, 0x3E);
+ threshold = limit_value(threshold, 0, 0x3E);
b43_phy_read(dev, 0x0020); /* dummy read */
b43_phy_write(dev, 0x0020,
(((u16) threshold) << 8) | 0x001C);
@@ -2764,7 +2764,7 @@ void b43_calc_nrssi_threshold(struct b43
else
a += 32;
a = a >> 6;
- a = clamp_val(a, -31, 31);
+ a = limit_value(a, -31, 31);
b = b * (phy->nrssi[1] - phy->nrssi[0]);
b += (phy->nrssi[0] << 6);
@@ -2773,7 +2773,7 @@ void b43_calc_nrssi_threshold(struct b43
else
b += 32;
b = b >> 6;
- b = clamp_val(b, -31, 31);
+ b = limit_value(b, -31, 31);
tmp_u16 = b43_phy_read(dev, 0x048A) & 0xF000;
tmp_u16 |= ((u32) b & 0x0000003F);
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c
--- linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43/lo.c 2008-05-19 17:42:19.000000000 -0400
@@ -199,7 +199,7 @@ static void lo_measure_txctl_values(stru
if (lb_gain > 10) {
radio_pctl_reg = 0;
pga = abs(10 - lb_gain) / 6;
- pga = clamp_val(pga, 0, 15);
+ pga = limit_value(pga, 0, 15);
} else {
int cmp_val;
int tmp;
@@ -321,7 +321,7 @@ static void lo_measure_gain_values(struc
phy->lna_lod_gain = 1;
trsw_rx_gain -= 8;
}
- trsw_rx_gain = clamp_val(trsw_rx_gain, 0, 0x2D);
+ trsw_rx_gain = limit_value(trsw_rx_gain, 0, 0x2D);
phy->pga_gain = trsw_rx_gain / 3;
if (phy->pga_gain >= 5) {
phy->pga_gain -= 5;
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-05-19 17:42:19.000000000 -0400
@@ -1182,10 +1182,10 @@ static void handle_irq_noise(struct b43_
/* Get the noise samples. */
B43_WARN_ON(dev->noisecalc.nr_samples >= 8);
i = dev->noisecalc.nr_samples;
- noise[0] = clamp_val(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
- noise[1] = clamp_val(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
- noise[2] = clamp_val(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
- noise[3] = clamp_val(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[0] = limit_value(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[1] = limit_value(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[2] = limit_value(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[3] = limit_value(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
dev->noisecalc.samples[i][0] = phy->nrssi_lt[noise[0]];
dev->noisecalc.samples[i][1] = phy->nrssi_lt[noise[1]];
dev->noisecalc.samples[i][2] = phy->nrssi_lt[noise[2]];
@@ -2178,7 +2178,7 @@ static int b43_write_initvals(struct b43
goto err_format;
array_size -= sizeof(iv->data.d32);
- value = get_unaligned_be32(&iv->data.d32);
+ value = be32_to_cpu(get_unaligned(&iv->data.d32));
b43_write32(dev, offset, value);
iv = (const struct b43_iv *)((const uint8_t *)iv +
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h 2008-05-19 17:42:19.000000000 -0400
@@ -939,6 +939,22 @@ static inline bool __b43_warn_on_dummy(b
# define B43_WARN_ON(x) __b43_warn_on_dummy(unlikely(!!(x)))
#endif
+/** Limit a value between two limits */
+#ifdef limit_value
+# undef limit_value
+#endif
+#define limit_value(value, min, max) \
+ ({ \
+ typeof(value) __value = (value); \
+ typeof(value) __min = (min); \
+ typeof(value) __max = (max); \
+ if (__value < __min) \
+ __value = __min; \
+ else if (__value > __max) \
+ __value = __max; \
+ __value; \
+ })
+
/* Convert an integer to a Q5.2 value */
#define INT_TO_Q52(i) ((i) << 2)
/* Convert a Q5.2 value to an integer (precision loss!) */
diff -up linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig linux-2.6.25.noarch/drivers/net/wireless/airo.c
--- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/airo.c 2008-05-19 17:31:10.000000000 -0400
@@ -3659,7 +3659,7 @@ void mpi_receive_802_11 (struct airo_inf
ptr += hdrlen;
if (hdrlen == 24)
ptr += 6;
- gap = get_unaligned_le16(ptr);
+ gap = le16_to_cpu(get_unaligned((__le16 *)ptr));
ptr += sizeof(__le16);
if (gap) {
if (gap <= 8)
@@ -4349,28 +4349,24 @@ static int proc_config_open( struct inod
static int proc_wepkey_open( struct inode *inode, struct file *file );
static const struct file_operations proc_statsdelta_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.open = proc_statsdelta_open,
.release = proc_close
};
static const struct file_operations proc_stats_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.open = proc_stats_open,
.release = proc_close
};
static const struct file_operations proc_status_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.open = proc_status_open,
.release = proc_close
};
static const struct file_operations proc_SSID_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.write = proc_write,
.open = proc_SSID_open,
@@ -4378,7 +4374,6 @@ static const struct file_operations proc
};
static const struct file_operations proc_BSSList_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.write = proc_write,
.open = proc_BSSList_open,
@@ -4386,7 +4381,6 @@ static const struct file_operations proc
};
static const struct file_operations proc_APList_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.write = proc_write,
.open = proc_APList_open,
@@ -4394,7 +4388,6 @@ static const struct file_operations proc
};
static const struct file_operations proc_config_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.write = proc_write,
.open = proc_config_open,
@@ -4402,7 +4395,6 @@ static const struct file_operations proc
};
static const struct file_operations proc_wepkey_ops = {
- .owner = THIS_MODULE,
.read = proc_read,
.write = proc_write,
.open = proc_wepkey_open,
@@ -4421,6 +4413,10 @@ struct proc_data {
void (*on_close) (struct inode *, struct file *);
};
+#ifndef SETPROC_OPS
+#define SETPROC_OPS(entry, ops) (entry)->proc_fops = &(ops)
+#endif
+
static int setup_proc_entry( struct net_device *dev,
struct airo_info *apriv ) {
struct proc_dir_entry *entry;
@@ -4436,76 +4432,100 @@ static int setup_proc_entry( struct net_
apriv->proc_entry->owner = THIS_MODULE;
/* Setup the StatsDelta */
- entry = proc_create_data("StatsDelta",
- S_IFREG | (S_IRUGO&proc_perm),
- apriv->proc_entry, &proc_statsdelta_ops, dev);
+ entry = create_proc_entry("StatsDelta",
+ S_IFREG | (S_IRUGO&proc_perm),
+ apriv->proc_entry);
if (!entry)
goto fail_stats_delta;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_statsdelta_ops);
/* Setup the Stats */
- entry = proc_create_data("Stats",
- S_IFREG | (S_IRUGO&proc_perm),
- apriv->proc_entry, &proc_stats_ops, dev);
+ entry = create_proc_entry("Stats",
+ S_IFREG | (S_IRUGO&proc_perm),
+ apriv->proc_entry);
if (!entry)
goto fail_stats;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_stats_ops);
/* Setup the Status */
- entry = proc_create_data("Status",
- S_IFREG | (S_IRUGO&proc_perm),
- apriv->proc_entry, &proc_status_ops, dev);
+ entry = create_proc_entry("Status",
+ S_IFREG | (S_IRUGO&proc_perm),
+ apriv->proc_entry);
if (!entry)
goto fail_status;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_status_ops);
/* Setup the Config */
- entry = proc_create_data("Config",
- S_IFREG | proc_perm,
- apriv->proc_entry, &proc_config_ops, dev);
+ entry = create_proc_entry("Config",
+ S_IFREG | proc_perm,
+ apriv->proc_entry);
if (!entry)
goto fail_config;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_config_ops);
/* Setup the SSID */
- entry = proc_create_data("SSID",
- S_IFREG | proc_perm,
- apriv->proc_entry, &proc_SSID_ops, dev);
+ entry = create_proc_entry("SSID",
+ S_IFREG | proc_perm,
+ apriv->proc_entry);
if (!entry)
goto fail_ssid;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_SSID_ops);
/* Setup the APList */
- entry = proc_create_data("APList",
- S_IFREG | proc_perm,
- apriv->proc_entry, &proc_APList_ops, dev);
+ entry = create_proc_entry("APList",
+ S_IFREG | proc_perm,
+ apriv->proc_entry);
if (!entry)
goto fail_aplist;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_APList_ops);
/* Setup the BSSList */
- entry = proc_create_data("BSSList",
- S_IFREG | proc_perm,
- apriv->proc_entry, &proc_BSSList_ops, dev);
+ entry = create_proc_entry("BSSList",
+ S_IFREG | proc_perm,
+ apriv->proc_entry);
if (!entry)
goto fail_bsslist;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_BSSList_ops);
/* Setup the WepKey */
- entry = proc_create_data("WepKey",
- S_IFREG | proc_perm,
- apriv->proc_entry, &proc_wepkey_ops, dev);
+ entry = create_proc_entry("WepKey",
+ S_IFREG | proc_perm,
+ apriv->proc_entry);
if (!entry)
goto fail_wepkey;
entry->uid = proc_uid;
entry->gid = proc_gid;
+ entry->data = dev;
+ entry->owner = THIS_MODULE;
+ SETPROC_OPS(entry, proc_wepkey_ops);
return 0;
diff -up linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c
--- linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_usb.c 2008-05-19 17:31:10.000000000 -0400
@@ -545,11 +545,11 @@ static void handle_rx_packet(struct zd_u
* be padded. Unaligned access might also happen if the length_info
* structure is not present.
*/
- if (get_unaligned_le16(&length_info->tag) == RX_LENGTH_INFO_TAG)
+ if (get_unaligned(&length_info->tag) == cpu_to_le16(RX_LENGTH_INFO_TAG))
{
unsigned int l, k, n;
for (i = 0, l = 0;; i++) {
- k = get_unaligned_le16(&length_info->length[i]);
+ k = le16_to_cpu(get_unaligned(&length_info->length[i]));
if (k == 0)
return;
n = l+k;
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c
--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/phy.c 2008-05-19 17:43:33.000000000 -0400
@@ -1088,7 +1088,7 @@ static void b43legacy_phy_initg(struct b
* the value 0x7FFFFFFF here. I think that is some weird
* compiler optimization in the original driver.
* Essentially, what we do here is resetting all NRSSI LT
- * entries to -32 (see the clamp_val() in nrssi_hw_update())
+ * entries to -32 (see the limit_value() in nrssi_hw_update())
*/
b43legacy_nrssi_hw_update(dev, 0xFFFF);
b43legacy_calc_nrssi_threshold(dev);
@@ -1756,7 +1756,7 @@ static s8 b43legacy_phy_estimate_power_o
switch (phy->type) {
case B43legacy_PHYTYPE_B:
case B43legacy_PHYTYPE_G:
- tmp = clamp_val(tmp, 0x00, 0x3F);
+ tmp = limit_value(tmp, 0x00, 0x3F);
dbm = phy->tssi2dbm[tmp];
break;
default:
@@ -1859,7 +1859,7 @@ void b43legacy_phy_xmitpower(struct b43l
/* find the desired power in Q5.2 - power_level is in dBm
* and limit it - max_pwr is already in Q5.2 */
- desired_pwr = clamp_val(phy->power_level << 2, 0, max_pwr);
+ desired_pwr = limit_value(phy->power_level << 2, 0, max_pwr);
if (b43legacy_debug(dev, B43legacy_DBG_XMITPOWER))
b43legacydbg(dev->wl, "Current TX power output: " Q52_FMT
" dBm, Desired TX power output: " Q52_FMT
@@ -1905,7 +1905,7 @@ void b43legacy_phy_xmitpower(struct b43l
radio_attenuation++;
}
}
- baseband_attenuation = clamp_val(baseband_attenuation, 0, 11);
+ baseband_attenuation = limit_value(baseband_attenuation, 0, 11);
txpower = phy->txctl1;
if ((phy->radio_ver == 0x2050) && (phy->radio_rev == 2)) {
@@ -1933,8 +1933,8 @@ void b43legacy_phy_xmitpower(struct b43l
}
/* Save the control values */
phy->txctl1 = txpower;
- baseband_attenuation = clamp_val(baseband_attenuation, 0, 11);
- radio_attenuation = clamp_val(radio_attenuation, 0, 9);
+ baseband_attenuation = limit_value(baseband_attenuation, 0, 11);
+ radio_attenuation = limit_value(radio_attenuation, 0, 9);
phy->rfatt = radio_attenuation;
phy->bbatt = baseband_attenuation;
@@ -1979,7 +1979,7 @@ s8 b43legacy_tssi2dbm_entry(s8 entry [],
f = q;
i++;
} while (delta >= 2);
- entry[index] = clamp_val(b43legacy_tssi2dbm_ad(m1 * f, 8192),
+ entry[index] = limit_value(b43legacy_tssi2dbm_ad(m1 * f, 8192),
-127, 128);
return 0;
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c
--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/radio.c 2008-05-19 17:43:33.000000000 -0400
@@ -357,7 +357,7 @@ void b43legacy_nrssi_hw_update(struct b4
for (i = 0; i < 64; i++) {
tmp = b43legacy_nrssi_hw_read(dev, i);
tmp -= val;
- tmp = clamp_val(tmp, -32, 31);
+ tmp = limit_value(tmp, -32, 31);
b43legacy_nrssi_hw_write(dev, i, tmp);
}
}
@@ -375,7 +375,7 @@ void b43legacy_nrssi_mem_update(struct b
tmp = (i - delta) * phy->nrssislope;
tmp /= 0x10000;
tmp += 0x3A;
- tmp = clamp_val(tmp, 0, 0x3F);
+ tmp = limit_value(tmp, 0, 0x3F);
phy->nrssi_lt[i] = tmp;
}
}
@@ -839,7 +839,7 @@ void b43legacy_calc_nrssi_threshold(stru
} else
threshold = phy->nrssi[1] - 5;
- threshold = clamp_val(threshold, 0, 0x3E);
+ threshold = limit_value(threshold, 0, 0x3E);
b43legacy_phy_read(dev, 0x0020); /* dummy read */
b43legacy_phy_write(dev, 0x0020, (((u16)threshold) << 8)
| 0x001C);
@@ -892,7 +892,7 @@ void b43legacy_calc_nrssi_threshold(stru
else
a += 32;
a = a >> 6;
- a = clamp_val(a, -31, 31);
+ a = limit_value(a, -31, 31);
b = b * (phy->nrssi[1] - phy->nrssi[0]);
b += (phy->nrssi[0] << 6);
@@ -901,7 +901,7 @@ void b43legacy_calc_nrssi_threshold(stru
else
b += 32;
b = b >> 6;
- b = clamp_val(b, -31, 31);
+ b = limit_value(b, -31, 31);
tmp_u16 = b43legacy_phy_read(dev, 0x048A) & 0xF000;
tmp_u16 |= ((u32)b & 0x0000003F);
@@ -1905,7 +1905,7 @@ void b43legacy_radio_set_txpower_a(struc
u16 dac;
u16 ilt;
- txpower = clamp_val(txpower, 0, 63);
+ txpower = limit_value(txpower, 0, 63);
pamp = b43legacy_get_txgain_freq_power_amp(txpower);
pamp <<= 5;
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c
--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c 2008-05-19 17:43:33.000000000 -0400
@@ -846,10 +846,10 @@ static void handle_irq_noise(struct b43l
/* Get the noise samples. */
B43legacy_WARN_ON(dev->noisecalc.nr_samples >= 8);
i = dev->noisecalc.nr_samples;
- noise[0] = clamp_val(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
- noise[1] = clamp_val(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
- noise[2] = clamp_val(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
- noise[3] = clamp_val(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[0] = limit_value(noise[0], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[1] = limit_value(noise[1], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[2] = limit_value(noise[2], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
+ noise[3] = limit_value(noise[3], 0, ARRAY_SIZE(phy->nrssi_lt) - 1);
dev->noisecalc.samples[i][0] = phy->nrssi_lt[noise[0]];
dev->noisecalc.samples[i][1] = phy->nrssi_lt[noise[1]];
dev->noisecalc.samples[i][2] = phy->nrssi_lt[noise[2]];
@@ -1720,7 +1720,7 @@ static int b43legacy_write_initvals(stru
goto err_format;
array_size -= sizeof(iv->data.d32);
- value = get_unaligned_be32(&iv->data.d32);
+ value = be32_to_cpu(get_unaligned(&iv->data.d32));
b43legacy_write32(dev, offset, value);
iv = (const struct b43legacy_iv *)((const uint8_t *)iv +
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h
--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig 2008-05-19 17:29:38.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h 2008-05-19 17:43:33.000000000 -0400
@@ -823,6 +823,23 @@ void b43legacydbg(struct b43legacy_wl *w
# define b43legacydbg(wl, fmt...) do { /* nothing */ } while (0)
#endif /* DEBUG */
+
+/** Limit a value between two limits */
+#ifdef limit_value
+# undef limit_value
+#endif
+#define limit_value(value, min, max) \
+ ({ \
+ typeof(value) __value = (value); \
+ typeof(value) __min = (min); \
+ typeof(value) __max = (max); \
+ if (__value < __min) \
+ __value = __min; \
+ else if (__value > __max) \
+ __value = __max; \
+ __value; \
+ })
+
/* Macros for printing a value in Q5.2 format */
#define Q52_FMT "%u.%u"
#define Q52_ARG(q52) ((q52) / 4), (((q52) & 3) * 100 / 4)
diff -up linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c.orig linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c
--- linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/libertas/scan.c 2008-05-19 17:31:10.000000000 -0400
@@ -523,7 +523,7 @@ static int lbs_process_bss(struct bss_de
if (*bytesleft >= sizeof(beaconsize)) {
/* Extract & convert beacon size from the command buffer */
- beaconsize = get_unaligned_le16(*pbeaconinfo);
+ beaconsize = le16_to_cpu(get_unaligned((__le16 *)*pbeaconinfo));
*bytesleft -= sizeof(beaconsize);
*pbeaconinfo += sizeof(beaconsize);
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c
--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c 2008-05-19 17:31:10.000000000 -0400
@@ -554,36 +554,40 @@ static void iwl3945_add_radiotap(struct
iwl3945_rt->rt_hdr.it_pad = 0;
/* total header + data */
- put_unaligned_le16(sizeof(*iwl3945_rt), &iwl3945_rt->rt_hdr.it_len);
+ put_unaligned(cpu_to_le16(sizeof(*iwl3945_rt)),
+ &iwl3945_rt->rt_hdr.it_len);
/* Indicate all the fields we add to the radiotap header */
- put_unaligned_le32((1 << IEEE80211_RADIOTAP_TSFT) |
- (1 << IEEE80211_RADIOTAP_FLAGS) |
- (1 << IEEE80211_RADIOTAP_RATE) |
- (1 << IEEE80211_RADIOTAP_CHANNEL) |
- (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) |
- (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) |
- (1 << IEEE80211_RADIOTAP_ANTENNA),
- &iwl3945_rt->rt_hdr.it_present);
+ put_unaligned(cpu_to_le32((1 << IEEE80211_RADIOTAP_TSFT) |
+ (1 << IEEE80211_RADIOTAP_FLAGS) |
+ (1 << IEEE80211_RADIOTAP_RATE) |
+ (1 << IEEE80211_RADIOTAP_CHANNEL) |
+ (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) |
+ (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) |
+ (1 << IEEE80211_RADIOTAP_ANTENNA)),
+ &iwl3945_rt->rt_hdr.it_present);
/* Zero the flags, we'll add to them as we go */
iwl3945_rt->rt_flags = 0;
- put_unaligned_le64(tsf, &iwl3945_rt->rt_tsf);
+ put_unaligned(cpu_to_le64(tsf), &iwl3945_rt->rt_tsf);
iwl3945_rt->rt_dbmsignal = signal;
iwl3945_rt->rt_dbmnoise = noise;
/* Convert the channel frequency and set the flags */
- put_unaligned_le16(stats->freq, &iwl3945_rt->rt_channelMHz);
+ put_unaligned(cpu_to_le16(stats->freq), &iwl3945_rt->rt_channelMHz);
if (!(phy_flags_hw & RX_RES_PHY_FLAGS_BAND_24_MSK))
- put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ,
+ put_unaligned(cpu_to_le16(IEEE80211_CHAN_OFDM |
+ IEEE80211_CHAN_5GHZ),
&iwl3945_rt->rt_chbitmask);
else if (phy_flags_hw & RX_RES_PHY_FLAGS_MOD_CCK_MSK)
- put_unaligned_le16(IEEE80211_CHAN_CCK | IEEE80211_CHAN_2GHZ,
+ put_unaligned(cpu_to_le16(IEEE80211_CHAN_CCK |
+ IEEE80211_CHAN_2GHZ),
&iwl3945_rt->rt_chbitmask);
else /* 802.11g */
- put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_2GHZ,
+ put_unaligned(cpu_to_le16(IEEE80211_CHAN_OFDM |
+ IEEE80211_CHAN_2GHZ),
&iwl3945_rt->rt_chbitmask);
if (rate == -1)
diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c
--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig 2008-05-19 17:31:02.000000000 -0400
+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c 2008-05-19 17:31:10.000000000 -0400
@@ -58,6 +58,10 @@
#include "reg.h"
#include "debug.h"
+/* unaligned little endian access */
+#define LE_READ_2(_p) (le16_to_cpu(get_unaligned((__le16 *)(_p))))
+#define LE_READ_4(_p) (le32_to_cpu(get_unaligned((__le32 *)(_p))))
+
enum {
ATH_LED_TX,
ATH_LED_RX,
@@ -2894,9 +2898,9 @@ static void ath5k_configure_filter(struc
if (!mclist)
break;
/* calculate XOR of eight 6-bit values */
- val = get_unaligned_le32(mclist->dmi_addr + 0);
+ val = LE_READ_4(mclist->dmi_addr + 0);
pos = (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
- val = get_unaligned_le32(mclist->dmi_addr + 3);
+ val = LE_READ_4(mclist->dmi_addr + 3);
pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
pos &= 0x3f;
mfilt[pos / 32] |= (1 << (pos % 32));
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.441
retrieving revision 1.442
diff -u -r1.441 -r1.442
--- kernel.spec 21 May 2008 20:42:11 -0000 1.441
+++ kernel.spec 21 May 2008 21:22:40 -0000 1.442
@@ -651,30 +651,19 @@
# Patch671: linux-2.6-libata-fix-hpt-svw-dma-masking.patch
Patch672: linux-2.6-libata-it821x-improve-emulation-handling.patch
Patch673: linux-2.6-libata-pata_ataiixp-clear-simplex-b4-probe.patch
+Patch674: linux-2.6-sata-eeepc-faster.patch
Patch680: linux-2.6-wireless.patch
Patch681: linux-2.6-wireless-pending.patch
-Patch682: linux-2.6-wireless-pending-fixups.patch
-Patch683: linux-2.6-wireless-pending-too.patch
-Patch684: linux-2.6-rndis_host-fixes.patch
Patch690: linux-2.6-at76.patch
-Patch691: linux-2.6-rndis_wlan.patch
-Patch692: linux-2.6-ps3_gelic_wireless.patch
-Patch700: linux-2.6-cfg80211-extras.patch
-Patch701: linux-2.6-zd1211rw-module-alias.patch
+
Patch720: linux-2.6-e1000-bad-csum-allow.patch
Patch721: linux-2.6-netdev-e1000-disable-alpm.patch
Patch725: linux-2.6-netdev-atl2.patch
# Patch731: linux-2.6-netdev-smc91c92_cs-fix-station-addr.patch
# Patch732: linux-2.6-netdev-bonding-fix-null-deref.patch
-#Patch780: linux-2.6-clockevents-fix-resume-logic.patch
-Patch761: linux-2.6-acpi-video-backlight-rationalize.patch
-#Patch763: linux-2.6-acpi-video-fix-multiple-busses.patch
-Patch767: linux-2.6-acpi_ec_early_init_fix.patch
#Patch768: linux-2.6-acpi-fix-sizeof.patch
-Patch770: linux-2.6-acpi-disable-stray-interrupt-1.patch
-Patch771: linux-2.6-acpi-disable-stray-interrupt-2.patch
Patch784: linux-2.6-acpi-eeepc-hotkey.patch
Patch820: linux-2.6-compile-fixes.patch
@@ -1206,6 +1195,8 @@
# Disable PCI MMCONFIG by default.
ApplyPatch linux-2.6-defaults-nommconf.patch
+# libata
+#
# Disable ATAPI DMA on ALI chipsets.
ApplyPatch linux-2.6-libata-ali-atapi-dma.patch
# ia64 ata quirk
@@ -1214,22 +1205,19 @@
ApplyPatch linux-2.6-libata-it821x-improve-emulation-handling.patch
# clear simplex DMA before probing
ApplyPatch linux-2.6-libata-pata_ataiixp-clear-simplex-b4-probe.patch
+# make eeepc ata go faster
+ApplyPatch linux-2.6-sata-eeepc-faster.patch
-# wireless patches headed for 2.6.25
-ApplyPatch linux-2.6-wireless.patch
+# wireless
+#
# 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-pending.patch
-ApplyPatch linux-2.6-wireless-pending-fixups.patch
-# wireless patches staged for 2.6.27
-ApplyPatch linux-2.6-wireless-pending-too.patch
-
# Add misc wireless bits from upstream wireless tree
ApplyPatch linux-2.6-at76.patch
-ApplyPatch linux-2.6-rndis_wlan.patch
-ApplyPatch linux-2.6-ps3_gelic_wireless.patch
-
-# Some rndis_host fixes pertinent to wireless
-ApplyPatch linux-2.6-rndis_host-fixes.patch
+# fixups to make current wireless patches build on this kernel
+ApplyPatch linux-2.6-wireless-fixups.patch
# Restore ability to add/remove virtual i/fs to mac80211 devices
ApplyPatch linux-2.6-cfg80211-extras.patch
@@ -1245,17 +1233,11 @@
ApplyPatch linux-2.6-netdev-atl2.patch
# ACPI/PM patches
-# fix multiple ACPI brightness problems (#427518)
-ApplyPatch linux-2.6-acpi-video-backlight-rationalize.patch
-#ApplyPatch linux-2.6-acpi-video-fix-multiple-busses.patch
-# revert EC change in 2.6.24 that broke some notebooks (#432477)
-ApplyPatch linux-2.6-acpi_ec_early_init_fix.patch -R
-# acpi has a bug in the sizeof function causing thermal panics
+# acpi has a bug in the sizeof function causing thermal panics (??? in 2.6.25)
#ApplyPatch linux-2.6-acpi-fix-sizeof.patch
-# properly disable stray interrupts in acpi
-ApplyPatch linux-2.6-acpi-disable-stray-interrupt-1.patch
-ApplyPatch linux-2.6-acpi-disable-stray-interrupt-2.patch
-
+# properly disable stray interrupts in acpi (??? in 2.6.25)
+#ApplyPatch linux-2.6-acpi-disable-stray-interrupt-1.patch
+#ApplyPatch linux-2.6-acpi-disable-stray-interrupt-2.patch
# Eeepc hotkey driver
ApplyPatch linux-2.6-acpi-eeepc-hotkey.patch
@@ -1924,6 +1906,9 @@
%changelog
+* Wed May 21 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25.4-2
+- eeepc, wireless, acpi, lirc, and uvcvideo updates for 2.6.25.
+
* Wed May 21 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25.4-1
- Initial commit of kernel 2.6.25.4; does not build yet.
linux-2.6-acpi-eeepc-hotkey.patch:
Index: linux-2.6-acpi-eeepc-hotkey.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-acpi-eeepc-hotkey.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-acpi-eeepc-hotkey.patch 15 Feb 2008 23:58:52 -0000 1.2
+++ linux-2.6-acpi-eeepc-hotkey.patch 21 May 2008 21:22:40 -0000 1.3
@@ -12,8 +12,8 @@
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -251,4 +251,14 @@ config ATMEL_SSC
-
- If unsure, say N.
+ driver (SCSI/ATA) which supports enclosures
+ or a SCSI enclosure device (SES) to use these services.
+config EEEPC
+ tristate "Eee PC Hotkey Driver (EXPERIMENTAL)"
@@ -31,9 +31,9 @@
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -17,3 +17,4 @@ obj-$(CONFIG_SONY_LAPTOP) += sony-laptop.o
- obj-$(CONFIG_THINKPAD_ACPI) += thinkpad_acpi.o
- obj-$(CONFIG_FUJITSU_LAPTOP) += fujitsu-laptop.o
obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
+ obj-$(CONFIG_INTEL_MENLOW) += intel_menlow.o
+ obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o
+obj-$(CONFIG_EEEPC) += eeepc.o
diff --git a/drivers/misc/eeepc.c b/drivers/misc/eeepc.c
new file mode 100644
linux-2.6-at76.patch:
Index: linux-2.6-at76.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-at76.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- linux-2.6-at76.patch 28 Feb 2008 03:18:34 -0000 1.8
+++ linux-2.6-at76.patch 21 May 2008 21:22:40 -0000 1.9
@@ -1,4 +1,65 @@
-commit e141a848e24724c2d5534ff8152b0be4fe1b6f62
+commit 755a49a4b9d296651276ca8ca3ece49ded9ae621
+Author: Bruno Randolf <br1 at einfach.org>
+Date: Thu May 8 19:15:40 2008 +0200
+
+ at76: use hardware flags for signal/noise units
+
+ This is the at76_usb bits...
+
+ trying to clean up the signal/noise code. the previous code in mac80211 had
+ confusing names for the related variables, did not have much definition of
+ what units of signal and noise were provided and used implicit mechanisms from
+ the wireless extensions.
+
+ this patch introduces hardware capability flags to let the hardware specify
+ clearly if it can provide signal and noise level values and which units it can
+ provide. this also anticipates possible new units like RCPI in the future.
+
+ for signal:
+
+ IEEE80211_HW_SIGNAL_UNSPEC - unspecified, unknown, hw specific
+ IEEE80211_HW_SIGNAL_DB - dB difference to unspecified reference point
+ IEEE80211_HW_SIGNAL_DBM - dBm, difference to 1mW
+
+ for noise we currently only have dBm:
+
+ IEEE80211_HW_NOISE_DBM - dBm, difference to 1mW
+
+ if IEEE80211_HW_SIGNAL_UNSPEC or IEEE80211_HW_SIGNAL_DB is used the driver has
+ to provide the maximum value (max_signal) it reports in order for applications
+ to make sense of the signal values.
+
+ i tried my best to find out for each driver what it can provide and update it
+ but i'm not sure (?) for some of them and used the more conservative guess in
+ doubt. this can be fixed easily after this patch has been merged by changing
+ the hardware flags of the driver.
+
+ DRIVER SIGNAL MAX NOISE QUAL
+ -----------------------------------------------------------------
+ adm8211 unspec(?) 100 n/a missing
+ at76_usb unspec(?) (?) unused missing
+ ath5k dBm dBm percent rssi
+ b43legacy dBm dBm percent jssi(?)
+ b43 dBm dBm percent jssi(?)
+ iwl-3945 dBm dBm percent snr+more
+ iwl-4965 dBm dBm percent snr+more
+ p54 unspec 127 n/a missing
+ rt2x00 dBm n/a percent rssi+tx/rx frame success
+ rt2400 dBm n/a
+ rt2500pci dBm n/a
+ rt2500usb dBm n/a
+ rt61pci dBm n/a
+ rt73usb dBm n/a
+ rtl8180 unspec(?) 65 n/a (?)
+ rtl8187 unspec(?) 65 (?) noise(?)
+ zd1211 dB(?) 100 n/a percent
+
+ drivers/net/wireless/ath5k/base.c: Changes-licensed-under: 3-Clause-BSD
+
+ Signed-off-by: Bruno Randolf <br1 at einfach.org>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 644ef9df7c598e369ba1794f65610b1a1e643fca
Author: Pavel Roskin <proski at gnu.org>
Date: Fri Feb 22 00:01:07 2008 -0500
@@ -7,7 +68,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 4891e7cb744d9e00dfe714c2827abcd32a02e405
+commit b226eae4c43640ed83cd8126c11602e230150a56
Author: Pavel Roskin <proski at gnu.org>
Date: Fri Feb 22 00:01:01 2008 -0500
@@ -16,7 +77,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit a5d909eecd7c57843395780d7bc3e9655093bd5e
+commit 9eccbe8447a68d649d3ca683193f34b3cb9c7c6c
Author: Pavel Roskin <proski at gnu.org>
Date: Fri Feb 22 00:00:55 2008 -0500
@@ -25,7 +86,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit e5d8694e15d0f20a5a3999ca6697278df9a66ca7
+commit 5a92d66e9642b3a0a8cee6eec7172b65d9c43548
Author: Pavel Roskin <proski at gnu.org>
Date: Fri Feb 22 00:00:50 2008 -0500
@@ -34,7 +95,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 781e1500cd246b9aeaa0fc7593f028d43c87dbc0
+commit 67c3d5b697774c6fe9a644fa302c82333e1d75e3
Author: Pavel Roskin <proski at gnu.org>
Date: Fri Feb 22 00:00:44 2008 -0500
@@ -45,7 +106,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 4083ec919a7353cf7a9de6cf42aa13669b7e018e
+commit b0b7eb18c8233622d1ffdea33814548e286379dd
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:01:19 2008 +0200
@@ -56,7 +117,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit bae74e67b58fc0ecf930fc1b5f485d536b1eea5a
+commit 1416847d10d0f9ddee78264dfdf14eab5fff72aa
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:01:11 2008 +0200
@@ -67,7 +128,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit e31a31b44489b3535fcf7b02871458186ed43aa7
+commit 3483c0c0779a404e7aa9a5261978a083fbf3aac7
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:01:04 2008 +0200
@@ -81,7 +142,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 162d3ad6b55220940216d35dc1418e0c0ef9b98e
+commit 10a9088fa5d75ca48fbc74108a106430336ab615
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:56 2008 +0200
@@ -95,7 +156,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 779e36d16d4b79f30207da5d41d8cda9151f8e1f
+commit bc12541b59aa1a0b4c58a093195d7ade3ebbbe60
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:49 2008 +0200
@@ -108,7 +169,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 0e5a456201237a135d5970b755ade55c18565033
+commit b5415e12ce5552b0b640c83a40fdc806eb130149
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:41 2008 +0200
@@ -117,7 +178,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 88ba88d527a925f0b0a5162e64e026e33312648e
+commit 82d266cbe56da67064793e1747d12abfe705ffc5
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:34 2008 +0200
@@ -126,7 +187,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 798f4f8d71f221f0e74dbd1588ab6225c64efc45
+commit 4e9c1daf0d0b98af6e4c0b87c299855dd63dec06
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:26 2008 +0200
@@ -141,7 +202,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit ee5141d10332561306a48b216a1ae1ddfe318805
+commit 475d2454db1a8a21af2cd06da2e31896b987efe4
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:19 2008 +0200
@@ -150,7 +211,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 2009705e36ad0b50f0cdb0f9ef186f33057d17e8
+commit adad9eb5df49e8b3848a28d3b865d2e6424f3092
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:11 2008 +0200
@@ -159,7 +220,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit bd80e67cdc3286868f59cf809b63c5c021392fbd
+commit 62690875db04e240d99f88ff9b4f9dd3a58ce70c
Author: Kalle Valo <kalle.valo at iki.fi>
Date: Sun Feb 10 17:00:04 2008 +0200
@@ -168,7 +229,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit c53a0aa28992ba7f212effec5e29be990848b54f
+commit 2e7fcbf808efa2b6145bccad8fd34c4c6eda7472
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Feb 10 16:59:56 2008 +0200
@@ -185,7 +246,7 @@
Signed-off-by: Kalle Valo <kalle.valo at iki.fi>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 38ec6fbd236318179e28c71bc1b3dc94166e4be2
+commit 21c8fae765d1382da763f3d32156c4d3401a4136
Author: Pavel Roskin <proski at gnu.org>
Date: Mon Feb 4 00:05:19 2008 -0500
@@ -196,7 +257,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 4ed58b00a2df9772cfa631f53af52c38207d78ac
+commit c0d59b16b5f8ac0c0350318e280a5422a01ae14a
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:41:25 2007 -0400
@@ -205,7 +266,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 3a39b0c26c19b4f26ab90f8cd170e68da3c8fb91
+commit f55a566e9a47c5260eda9287a44b890fe57ac601
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:41:18 2007 -0400
@@ -214,7 +275,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 69a965e9dde88c1dec49a0e840020bbdfc2263ad
+commit 3f1b51b7bdbc53ff409c3949a56fe9ff3c59d2eb
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:41:12 2007 -0400
@@ -226,7 +287,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit e007ed4c5328f857201d66c8564978bd4150a9a5
+commit 9608639caa2889d441c45c44f2a54857717eca90
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:41:06 2007 -0400
@@ -243,7 +304,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 84d9a4914d2f678728b0b9a4c4b360e93b2e2efa
+commit d531897dbecca5614ef099134ee9a674311b47ed
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:59 2007 -0400
@@ -259,7 +320,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 46e958f2e0334bfeb1436d8066e1797804212178
+commit b3c4d43a6f9c91b60e4e2a890ccbc67baf3e1c23
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:53 2007 -0400
@@ -278,7 +339,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit cbf56decc3dd24be59bdcd7af14ae6b6fc1d7265
+commit ac77f8ab8a2b9c53ac034edb5e68ffd474afcca7
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:47 2007 -0400
@@ -290,7 +351,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 73363e219953a6bcafa0087b415c0ce154a13940
+commit 2677d1fb37e29c2e37d50c795c2d29d6ee649116
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:40 2007 -0400
@@ -301,7 +362,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 65e5ad191757d5febb31e97a8a08dbd672d0662d
+commit c4212037d703306c7536f270435366d57ee1a006
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:34 2007 -0400
@@ -310,7 +371,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 8f3811adf092d19f14111166af05f10cb2efa651
+commit 7a5225ceeb8c14a0741c3deac0a6efb710f11ffc
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:27 2007 -0400
@@ -322,7 +383,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 0048a3f2c0de2f6ba969731f51eaaa73b3e168e2
+commit 191ba1c8ba5df72128d23ec6008cd34893d8ccf7
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:21 2007 -0400
@@ -334,7 +395,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 20eab45fc567b85f8aaa131eceb8d53ac14d3fd6
+commit d5d6f820fe6fa48351dcba9debe4c65da8844757
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:15 2007 -0400
@@ -343,7 +404,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit b96c9fd4b3770d5b731ed3d207644b2ffec80313
+commit 7a7dbbae303b5c8624ceb82b77745fae509e062e
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:08 2007 -0400
@@ -352,7 +413,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 6abdf0d9679fb3cc0b2ed539e24cbba058f33043
+commit bd26b5446f3456c144d96edf8b7d13c3dde16a03
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:40:02 2007 -0400
@@ -364,7 +425,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 53c4d65cd1f4455b6d0c6ce605a6853e9108c6ae
+commit 6ec4858caee0b303a555fb44eafd5ee439f8b4ce
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:55 2007 -0400
@@ -375,7 +436,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 2a000a0fb3a21674791023759e24e1bdc3c197ef
+commit c86491d05421636e1fa706266b0f7ad2aee1a2bd
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:49 2007 -0400
@@ -387,7 +448,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 59268149e41b94bc2bd3554fcd12d238e01bdc07
+commit 3e63eb48e4c32f46296181356dc6a18987f5114e
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:42 2007 -0400
@@ -398,7 +459,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 206f30d4d21565358128aa8ca210d518797ba285
+commit 3326a622746fb6569613b88322dfb345154c88b7
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:36 2007 -0400
@@ -409,7 +470,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit afd74d244ce1d869e82758c650f49a867501762f
+commit 9514c2fcf98ff2f9fb6dd559a26e6d8f85ecaa76
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:30 2007 -0400
@@ -418,7 +479,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 2235301c13ec2c6367ef129477be8967631a436f
+commit db516e461cf2d51b7175c456418bea3555b467a4
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:23 2007 -0400
@@ -429,7 +490,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit a38e0e268f2219660c91a3813d11c1440cb75faf
+commit eb1488ce769156c9478116c90c004d433103c4ee
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:17 2007 -0400
@@ -441,7 +502,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 451c1cd7fcdad82175c80fb0e3e4a0568b41c17a
+commit c1bbdd6462b3c5f8477372766282c1d25f9a37d6
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:11 2007 -0400
@@ -453,7 +514,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 447c17aaf1833217f82b97be42b333c72b966db2
+commit ecfd0aeb3ffd5429a0761d63204ee0e1aa22bf80
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:39:04 2007 -0400
@@ -465,7 +526,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 951329488d45d11d25914b4da0ab93f94d72582d
+commit 515128d684f9fdd512d6e8779ea424cba713730a
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:38:58 2007 -0400
@@ -474,7 +535,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit ae5f9aab3f18f4dcb9a83e490996990711c53cb4
+commit 789875f9bb6e33a70a67ff9c1e52c23d5cddf55c
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:38:51 2007 -0400
@@ -485,7 +546,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 3086da15d597fb24b7254c4e638b380597e7f7c0
+commit 3901e25c5af3c3671a3a909de1b8ac7daff1bd74
Author: Pavel Roskin <proski at gnu.org>
Date: Sun Sep 30 14:38:45 2007 -0400
@@ -494,7 +555,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit f6ea5e4633ef565282f4fdfd6efb4fce47ba63e6
+commit 9616128c0fca961737eae21eb70d65ec5ae88f94
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:37:34 2007 -0400
@@ -505,7 +566,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 27147842aa12fb6f3628c8b7bfe0d1e9e41ee6b8
+commit ad1f189acfcf0fd7fcf9c3e4d3dd516634c834e4
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:37:29 2007 -0400
@@ -517,7 +578,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 14a38765e92afa44f94b78911cb5f1d4bc717a29
+commit 6f6c011d64487eedba946378e8fd996dabcc0b10
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:37:23 2007 -0400
@@ -528,7 +589,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit b72a145cc8352a033cffd36e7edd3afc5ab8c692
+commit 977a28d972491da99f2a13c2e2c37d8d5604f8e4
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:37:17 2007 -0400
@@ -537,7 +598,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 21b01509a7a669f557fd0ef822058624bcaac6a4
+commit 3f62d973c16e75f2d4120519779950a24d2a9c9a
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:37:11 2007 -0400
@@ -546,7 +607,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 798293c1bbfc815ed7acd6b5390226292bbad05c
+commit cc34a2af9be308c433c2ca6612f2752ce8467db9
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:37:06 2007 -0400
@@ -555,7 +616,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 99de835fbdf7d9987511a3ffef63685edeb256f8
+commit d2e491a0392069876c419f46ee1da2a3380e046b
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:37:00 2007 -0400
@@ -564,7 +625,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit dc15d751590deb46a8f1aee782bc4f66a811ba58
+commit 7a01e11163335053670163cbf0db4cc5e3511c89
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:54 2007 -0400
@@ -576,7 +637,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit ec943e753321c78047b5e70d846deed79e3d7e0d
+commit cb1a31d4c741f65ec00be46240abb67e6c926036
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:49 2007 -0400
@@ -585,7 +646,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 474a3bd835a1d6ce0567b6f0ce71ce17520edf85
+commit f57a2fd0100b9a8c3edefeaa243b6f840074a3a2
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:43 2007 -0400
@@ -597,7 +658,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit e5d3864054c7bae4bde6681148db5fe293d3972f
+commit 114507c08d819e2228d35919183a4c28d624da1d
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:37 2007 -0400
@@ -606,7 +667,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 020e78ae379a4153b7c87aaeffca9d6694f0badb
+commit 5dc64efb69645a7bc8546a10f2b84318f2324042
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:31 2007 -0400
@@ -623,7 +684,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 83d03b994903ffe7f6ab0b540780852412387030
+commit 50f02f8f2a7a142fdd06050c62f917579879ee74
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:26 2007 -0400
@@ -634,7 +695,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 2510182b5f69324e37869cfee1d9b78c5a1c8cfe
+commit 8064cd0e0d5c3924cf126d345a4e29102b13499a
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:20 2007 -0400
@@ -647,7 +708,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit eb542472fb6621bed0d9a176e62ec261e162b3ac
+commit 53259a85aaf0282d7d3a659c36389fdf28d1fa21
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:14 2007 -0400
@@ -658,7 +719,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 0c1af75ef1a71060ddd0e32311b058feaa63ed23
+commit 79370642087659eed3ea51e78901f5e92b1df6be
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:09 2007 -0400
@@ -670,7 +731,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 71734a46b9d85b85b4e8672461f321f39e48b4aa
+commit 62b2450ba7563d2c316f19af7f30568c52dcfac3
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:36:03 2007 -0400
@@ -679,7 +740,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 3b19b79d75b5fa2746a277f52abf2690fe1a43f1
+commit fa5645d111a15b4cbc2d1b036c3f4b41611f9bc1
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:57 2007 -0400
@@ -692,7 +753,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 76403fd6c014238c564b38d9052298fc9e2a5078
+commit 780776a7a28950ef8e566651c10ab5a95aea4884
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:52 2007 -0400
@@ -704,7 +765,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit c56dfaaaada275f4a5c3cdef3dba3e6c714ce03f
+commit 5b3be54e08d28f2ed6da8b876bba3737bad5942b
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:46 2007 -0400
@@ -716,7 +777,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit c8a13ceeddd58a0c304da7eb8578e44197edad38
+commit 587b2c8ee7b15d588f773301bad51080832a7e16
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:40 2007 -0400
@@ -725,7 +786,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit ca2c72f021bef2fbb8c2c56e6d0650ba7891f7ca
+commit 08bc3de996e05450fa0176a17679fcebc24139bf
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:34 2007 -0400
@@ -737,7 +798,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 1c4f1ca9448b9300e484e39d57882a7ae38a5729
+commit 1089c6bbad5d991c7e12ed02c19b32751b3ddeea
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:29 2007 -0400
@@ -749,7 +810,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit fef6c2352ca33980d9aba9232b70aeecace2a134
+commit 1e8d1ad6860f22fc65e662b5e65dde2e86731e3a
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:23 2007 -0400
@@ -760,7 +821,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit aa7b9455703286c9823bcbd0a55f3418a0a1b47a
+commit 36fa01418f1e67b47e4bcbe06fde764f7d135b7e
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:17 2007 -0400
@@ -769,7 +830,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 9c13ed40aeed909e386950c302f6d9c130a92b2a
+commit 13c7446d6f3bce0beea750c949f80f24d87dac4d
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:11 2007 -0400
@@ -781,7 +842,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 8a2cb93b3bfc2c23a394f5e4fc8dd6837503640a
+commit 842e0f3649c89ef024fdd700a797b8403f2f06a1
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:06 2007 -0400
@@ -792,7 +853,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 5c777c0514de7cbc6652f10ad55feab36b13d21b
+commit ee19eafed18f2f49a05cfe8e66dc493becf1c964
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:35:00 2007 -0400
@@ -804,7 +865,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 10bbb7977ec0cbea6087d30af14147516a5eeac5
+commit 42e93794dbed231c784dcc300180c7608987dce2
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:34:54 2007 -0400
@@ -816,7 +877,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 2646301bdd06efe9677bb2ef96acc9c450cf1af8
+commit c478ce6e9b5d2ddf7207c1bcc056e6f0b06da59a
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:34:49 2007 -0400
@@ -825,7 +886,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 0a9cfd63f1773ce2196d15d5ff1214c3c693d8a7
+commit 3375cdeed9e742a9db01d6bb1dcec3069617563b
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:34:43 2007 -0400
@@ -834,7 +895,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 684ad32c3e727b65066a896124ed73834f14b087
+commit 39645cb583a21b16bb8040e8a37c91978cffc6a0
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:34:37 2007 -0400
@@ -843,7 +904,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit cb9222a5c85ff3634475f04a7949dc7b966c1902
+commit 9abffbeb930a2d7e102c22ea0cfc32974582cb35
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:34:31 2007 -0400
@@ -852,7 +913,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 92315ab89a2ffffcb5ef24554489b06e322ea17c
+commit 28c14e6f772da88fe1727b4537c056605abb111d
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:34:26 2007 -0400
@@ -861,7 +922,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 46211c37a56499d49829d8db2c230712d6053790
+commit b57294f30f7cd0b0ccb9c412a2c2ba35072de25f
Author: Pavel Roskin <proski at gnu.org>
Date: Sat Sep 1 00:34:20 2007 -0400
@@ -875,7 +936,7 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit cfc3a1a100a86079980e814674004793ad161390
+commit ce0262965d297f0c3df6b36cb60b5ec8061e823c
Author: Pavel Roskin <proski at gnu.org>
Date: Thu Aug 23 14:40:17 2007 -0400
@@ -892,10 +953,10 @@
Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-diff -up linux-2.6.24.noarch/MAINTAINERS.orig linux-2.6.24.noarch/MAINTAINERS
---- linux-2.6.24.noarch/MAINTAINERS.orig 2008-02-27 20:56:07.000000000 -0500
-+++ linux-2.6.24.noarch/MAINTAINERS 2008-02-27 20:56:14.000000000 -0500
-@@ -725,6 +725,15 @@ W: http://www.thekelleys.org.uk/atmel
+diff -up linux-2.6.25.noarch/MAINTAINERS.orig linux-2.6.25.noarch/MAINTAINERS
+--- linux-2.6.25.noarch/MAINTAINERS.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/MAINTAINERS 2008-05-19 17:53:23.000000000 -0400
+@@ -740,6 +740,15 @@ W: http://www.thekelleys.org.uk/atmel
W: http://atmelwlandriver.sourceforge.net/
S: Maintained
@@ -911,9 +972,9 @@
AUDIT SUBSYSTEM
P: David Woodhouse
M: dwmw2 at infradead.org
-diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/at76_usb.h
---- /dev/null 2008-02-27 08:31:30.805858387 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/at76_usb.h 2008-02-27 20:56:23.000000000 -0500
+diff -up /dev/null linux-2.6.25.noarch/drivers/net/wireless/at76_usb.h
+--- /dev/null 2008-05-19 07:57:11.730003501 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/at76_usb.h 2008-05-19 17:53:23.000000000 -0400
@@ -0,0 +1,464 @@
+/*
+ * Copyright (c) 2002,2003 Oliver Kurth
@@ -1379,9 +1440,9 @@
+#define MAX_PADDING_SIZE 53
+
+#endif /* _AT76_USB_H */
-diff -up linux-2.6.24.noarch/drivers/net/wireless/Makefile.orig linux-2.6.24.noarch/drivers/net/wireless/Makefile
---- linux-2.6.24.noarch/drivers/net/wireless/Makefile.orig 2008-02-27 20:56:07.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/Makefile 2008-02-27 20:56:14.000000000 -0500
+diff -up linux-2.6.25.noarch/drivers/net/wireless/Makefile.orig linux-2.6.25.noarch/drivers/net/wireless/Makefile
+--- linux-2.6.25.noarch/drivers/net/wireless/Makefile.orig 2008-05-19 17:52:43.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/Makefile 2008-05-19 17:53:23.000000000 -0400
@@ -32,6 +32,8 @@ obj-$(CONFIG_ATMEL) += atmel
obj-$(CONFIG_PCI_ATMEL) += atmel_pci.o
obj-$(CONFIG_PCMCIA_ATMEL) += atmel_cs.o
@@ -1391,10 +1452,10 @@
obj-$(CONFIG_PRISM54) += prism54/
obj-$(CONFIG_HOSTAP) += hostap/
-diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/at76_usb.c
---- /dev/null 2008-02-27 08:31:30.805858387 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/at76_usb.c 2008-02-27 20:56:23.000000000 -0500
-@@ -0,0 +1,2518 @@
+diff -up /dev/null linux-2.6.25.noarch/drivers/net/wireless/at76_usb.c
+--- /dev/null 2008-05-19 07:57:11.730003501 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/at76_usb.c 2008-05-19 17:53:24.000000000 -0400
+@@ -0,0 +1,2519 @@
+/*
+ * at76c503/at76c505 USB driver
+ *
@@ -2996,7 +3057,7 @@
+ at76_dbg_dump(DBG_RX_DATA, priv->rx_skb->data,
+ priv->rx_skb->len, "RX: len=%d", priv->rx_skb->len);
+
-+ rx_status.ssi = buf->rssi;
++ rx_status.signal = buf->rssi;
+ rx_status.flag |= RX_FLAG_DECRYPTED;
+ rx_status.flag |= RX_FLAG_IV_STRIPPED;
+
@@ -3670,7 +3731,8 @@
+
+ /* mac80211 initialisation */
+ priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &at76_supported_band;
-+ priv->hw->flags = IEEE80211_HW_RX_INCLUDES_FCS;
++ priv->hw->flags = IEEE80211_HW_RX_INCLUDES_FCS |
++ IEEE80211_HW_SIGNAL_UNSPEC;
+
+ SET_IEEE80211_DEV(priv->hw, &interface->dev);
+ SET_IEEE80211_PERM_ADDR(priv->hw, priv->mac_addr);
@@ -3913,10 +3975,10 @@
+MODULE_AUTHOR("Kalle Valo <kalle.valo at iki.fi>");
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPL");
-diff -up linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig 2008-02-27 20:56:07.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/Kconfig 2008-02-27 20:56:23.000000000 -0500
-@@ -457,6 +457,14 @@ config PCMCIA_ATMEL
+diff -up linux-2.6.25.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.25.noarch/drivers/net/wireless/Kconfig
+--- linux-2.6.25.noarch/drivers/net/wireless/Kconfig.orig 2008-05-19 17:52:43.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/Kconfig 2008-05-19 17:53:24.000000000 -0400
+@@ -456,6 +456,14 @@ config PCMCIA_ATMEL
Enable support for PCMCIA cards containing the
Atmel at76c502 and at76c504 chips.
linux-2.6-lirc.patch:
Index: linux-2.6-lirc.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-lirc.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-lirc.patch 11 Jan 2008 22:20:56 -0000 1.4
+++ linux-2.6-lirc.patch 21 May 2008 21:22:40 -0000 1.5
@@ -1,43 +1,8 @@
-Linux Infrared Remote Control drivers (http://lirc.org/)
-
-Signed-off-by: Jarod Wilson <jwilson at redhat.com>
-
- drivers/input/Kconfig | 2 +
- drivers/input/Makefile | 1 +
- drivers/input/lirc/Kconfig | 127 +++
- drivers/input/lirc/Makefile | 24 +
- drivers/input/lirc/commandir.c | 1009 +++++++++++++++++++++++
- drivers/input/lirc/commandir.h | 41 +
- drivers/input/lirc/kcompat.h | 150 ++++
- drivers/input/lirc/lirc.h | 101 +++
- drivers/input/lirc/lirc_atiusb.c | 1326 ++++++++++++++++++++++++++++++
- drivers/input/lirc/lirc_bt829.c | 393 +++++++++
- drivers/input/lirc/lirc_cmdir.c | 605 ++++++++++++++
- drivers/input/lirc/lirc_cmdir.h | 27 +
- drivers/input/lirc/lirc_dev.c | 827 +++++++++++++++++++
- drivers/input/lirc/lirc_dev.h | 264 ++++++
- drivers/input/lirc/lirc_i2c.c | 671 +++++++++++++++
- drivers/input/lirc/lirc_igorplugusb.c | 624 ++++++++++++++
- drivers/input/lirc/lirc_imon.c | 1165 +++++++++++++++++++++++++++
- drivers/input/lirc/lirc_it87.c | 1012 +++++++++++++++++++++++
- drivers/input/lirc/lirc_it87.h | 116 +++
- drivers/input/lirc/lirc_mceusb.c | 890 ++++++++++++++++++++
- drivers/input/lirc/lirc_mceusb2.c | 1042 ++++++++++++++++++++++++
- drivers/input/lirc/lirc_parallel.c | 745 +++++++++++++++++
- drivers/input/lirc/lirc_parallel.h | 26 +
- drivers/input/lirc/lirc_pvr150.c | 1431 +++++++++++++++++++++++++++++++++
- drivers/input/lirc/lirc_sasem.c | 971 ++++++++++++++++++++++
- drivers/input/lirc/lirc_serial.c | 1348 +++++++++++++++++++++++++++++++
- drivers/input/lirc/lirc_sir.c | 1323 ++++++++++++++++++++++++++++++
- drivers/input/lirc/lirc_streamzap.c | 810 +++++++++++++++++++
- drivers/input/lirc/lirc_ttusbir.c | 393 +++++++++
- 29 files changed, 17464 insertions(+), 0 deletions(-)
-
diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig
-index 63512d9..de4b170 100644
+index 9dea14d..d84ac4a 100644
--- a/drivers/input/Kconfig
+++ b/drivers/input/Kconfig
-@@ -161,5 +161,7 @@ source "drivers/input/gameport/Kconfig"
+@@ -173,5 +173,7 @@ source "drivers/input/gameport/Kconfig"
endmenu
@@ -46,14 +11,16 @@
endmenu
diff --git a/drivers/input/Makefile b/drivers/input/Makefile
-index 99af903..78b0420 100644
+index 2ae87b1..24bdec1 100644
--- a/drivers/input/Makefile
+++ b/drivers/input/Makefile
-@@ -22,3 +22,4 @@ obj-$(CONFIG_INPUT_TABLET) += tablet/
+@@ -21,5 +21,6 @@ obj-$(CONFIG_INPUT_JOYSTICK) += joystick/
+ obj-$(CONFIG_INPUT_TABLET) += tablet/
obj-$(CONFIG_INPUT_TOUCHSCREEN) += touchscreen/
obj-$(CONFIG_INPUT_MISC) += misc/
++obj-$(CONFIG_INPUT_LIRC) += lirc/
-+obj-$(CONFIG_INPUT_LIRC) += lirc/
+ obj-$(CONFIG_INPUT_APMPOWER) += apm-power.o
diff --git a/drivers/input/lirc/Kconfig b/drivers/input/lirc/Kconfig
new file mode 100644
index 0000000..138e58a
linux-2.6-uvcvideo.patch:
Index: linux-2.6-uvcvideo.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-uvcvideo.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-uvcvideo.patch 16 Feb 2008 00:47:57 -0000 1.1
+++ linux-2.6-uvcvideo.patch 21 May 2008 21:22:40 -0000 1.2
@@ -1,8 +1,8 @@
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
-index c9f14bf..19acd71 100644
+index 1832966..1be8bb6 100644
--- a/drivers/media/video/Kconfig
+++ b/drivers/media/video/Kconfig
-@@ -718,6 +718,7 @@ source "drivers/media/video/em28xx/Kconfig"
+@@ -737,6 +737,7 @@ source "drivers/media/video/em28xx/Kconfig"
source "drivers/media/video/usbvision/Kconfig"
source "drivers/media/video/usbvideo/Kconfig"
@@ -11,10 +11,10 @@
source "drivers/media/video/et61x251/Kconfig"
diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
-index b5a0641..91033cf 100644
+index 3f209b3..dda5db0 100644
--- a/drivers/media/video/Makefile
+++ b/drivers/media/video/Makefile
-@@ -123,6 +123,8 @@ obj-$(CONFIG_USB_KONICAWC) += usbvideo/
+@@ -130,6 +130,8 @@ obj-$(CONFIG_USB_KONICAWC) += usbvideo/
obj-$(CONFIG_USB_VICAM) += usbvideo/
obj-$(CONFIG_USB_QUICKCAM_MESSENGER) += usbvideo/
@@ -38,18 +38,18 @@
+ If unsure, jump up and down and look confused.
diff --git a/drivers/media/video/uvcvideo/Makefile b/drivers/media/video/uvcvideo/Makefile
new file mode 100644
-index 0000000..ada681c
+index 0000000..fe006fb
--- /dev/null
+++ b/drivers/media/video/uvcvideo/Makefile
@@ -0,0 +1,2 @@
+obj-$(CONFIG_USB_UVCVIDEO) := uvcvideo.o
-+uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o uvc_status.o uvc_isight.o
++uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o uvc_status.o uvc_isight.o
diff --git a/drivers/media/video/uvcvideo/uvc_compat.h b/drivers/media/video/uvcvideo/uvc_compat.h
new file mode 100644
-index 0000000..321f3d3
+index 0000000..7152561
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvc_compat.h
-@@ -0,0 +1,263 @@
+@@ -0,0 +1,316 @@
+#ifndef _UVC_COMPAT_H
+#define _UVC_COMPAT_H
+
@@ -191,6 +191,51 @@
+#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR ('V', 75, struct v4l2_frmivalenum)
+#endif
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
++/*
++ * V4L2 Control identifiers.
++ */
++#define V4L2_CTRL_CLASS_CAMERA 0x009A0000 /* Camera class controls */
++
++#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
++enum v4l2_power_line_frequency {
++ V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
++ V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
++ V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
++};
++
++#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
++#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
++#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
++#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
++
++#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
++#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
++
++#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
++enum v4l2_exposure_auto_type {
++ V4L2_EXPOSURE_MANUAL = 0,
++ V4L2_EXPOSURE_AUTO = 1,
++ V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
++ V4L2_EXPOSURE_APERTURE_PRIORITY = 3
++};
++#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
++#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
++
++#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
++#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
++#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
++#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
++
++#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
++#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
++
++#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
++#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
++#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
++
++#endif
++
+#ifdef __KERNEL__
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
@@ -309,16 +354,24 @@
+
+#endif
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
++/*
++ * Linked list API
++ */
++#define list_first_entry(ptr, type, member) \
++ list_entry((ptr)->next, type, member)
++#endif
++
+#endif /* __KERNEL__ */
+
+#endif /* _UVC_COMPAT_H */
+
diff --git a/drivers/media/video/uvcvideo/uvc_ctrl.c b/drivers/media/video/uvcvideo/uvc_ctrl.c
new file mode 100644
-index 0000000..8b7caf9
+index 0000000..dce576b
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvc_ctrl.c
-@@ -0,0 +1,1169 @@
+@@ -0,0 +1,1245 @@
+/*
+ * uvcvideo.c -- USB Video Class driver
+ *
@@ -493,6 +546,14 @@
+ .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
+ | UVC_CONTROL_RESTORE | UVC_CONTROL_AUTO_UPDATE,
+ },
++ {
++ .entity = UVC_GUID_UVC_PROCESSING,
++ .selector = PU_WHITE_BALANCE_COMPONENT_CONTROL,
++ .index = 7,
++ .size = 4,
++ .flags = UVC_CONTROL_SET_CUR | UVC_CONTROL_GET_RANGE
++ | UVC_CONTROL_RESTORE | UVC_CONTROL_AUTO_UPDATE,
++ },
+};
+
+static struct uvc_menu_info power_line_frequency_controls[] = {
@@ -644,7 +705,7 @@
+ .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
+ },
+ {
-+ .id = V4L2_CID_WHITE_BALANCE_TEMPERATURE_AUTO,
++ .id = V4L2_CID_AUTO_WHITE_BALANCE,
+ .name = "White Balance Temperature, Auto",
+ .entity = UVC_GUID_UVC_PROCESSING,
+ .selector = PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL,
@@ -664,6 +725,36 @@
+ .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
+ },
+ {
++ .id = V4L2_CID_AUTO_WHITE_BALANCE,
++ .name = "White Balance Component, Auto",
++ .entity = UVC_GUID_UVC_PROCESSING,
++ .selector = PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL,
++ .size = 1,
++ .offset = 0,
++ .v4l2_type = V4L2_CTRL_TYPE_BOOLEAN,
++ .data_type = UVC_CTRL_DATA_TYPE_BOOLEAN,
++ },
++ {
++ .id = V4L2_CID_BLUE_BALANCE,
++ .name = "White Balance Blue Component",
++ .entity = UVC_GUID_UVC_PROCESSING,
++ .selector = PU_WHITE_BALANCE_COMPONENT_CONTROL,
++ .size = 16,
++ .offset = 0,
++ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
++ .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
++ },
++ {
++ .id = V4L2_CID_RED_BALANCE,
++ .name = "White Balance Red Component",
++ .entity = UVC_GUID_UVC_PROCESSING,
++ .selector = PU_WHITE_BALANCE_COMPONENT_CONTROL,
++ .size = 16,
++ .offset = 16,
++ .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
++ .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
++ },
++ {
+ .id = V4L2_CID_FOCUS_ABSOLUTE,
+ .name = "Focus (absolute)",
+ .entity = UVC_GUID_UVC_CAMERA,
@@ -857,6 +948,8 @@
+{
+ struct uvc_control *ctrl;
+ struct uvc_control_mapping *mapping;
++ struct uvc_menu_info *menu;
++ unsigned int i;
+ __u8 data[8];
+ int ret;
+
@@ -879,6 +972,23 @@
+ return ret;
+ v4l2_ctrl->default_value = uvc_get_le_value(data, mapping);
+ }
++
++ if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
++ v4l2_ctrl->minimum = 0;
++ v4l2_ctrl->maximum = mapping->menu_count - 1;
++ v4l2_ctrl->step = 1;
++
++ menu = mapping->menu_info;
++ for (i = 0; i < mapping->menu_count; ++i, ++menu) {
++ if (menu->value == v4l2_ctrl->default_value) {
++ v4l2_ctrl->default_value = i;
++ break;
++ }
++ }
++
++ return 0;
++ }
++
+ if (ctrl->info->flags & UVC_CONTROL_GET_MIN) {
+ if ((ret = uvc_query_ctrl(video->dev, GET_MIN, ctrl->entity->id,
+ video->dev->intfnum, ctrl->info->selector,
@@ -1006,6 +1116,8 @@
+{
+ struct uvc_control *ctrl;
+ struct uvc_control_mapping *mapping;
++ struct uvc_menu_info *menu;
++ unsigned int i;
+ int ret;
+
+ ctrl = uvc_find_control(video, xctrl->id, &mapping);
@@ -1027,6 +1139,16 @@
+ xctrl->value = uvc_get_le_value(
+ uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), mapping);
+
++ if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
++ menu = mapping->menu_info;
++ for (i = 0; i < mapping->menu_count; ++i, ++menu) {
++ if (menu->value == xctrl->value) {
++ xctrl->value = i;
++ break;
++ }
++ }
++ }
++
+ return 0;
+}
+
@@ -1035,12 +1157,19 @@
+{
+ struct uvc_control *ctrl;
+ struct uvc_control_mapping *mapping;
++ s32 value = xctrl->value;
+ int ret;
+
+ ctrl = uvc_find_control(video, xctrl->id, &mapping);
+ if (ctrl == NULL || (ctrl->info->flags & UVC_CONTROL_SET_CUR) == 0)
+ return -EINVAL;
+
++ if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
++ if (value < 0 || value >= mapping->menu_count)
++ return -EINVAL;
++ value = mapping->menu_info[value].value;
++ }
++
+ if (!ctrl->loaded && (ctrl->info->size * 8) != mapping->size) {
+ if ((ctrl->info->flags & UVC_CONTROL_GET_CUR) == 0) {
+ memset(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
@@ -1065,7 +1194,7 @@
+ ctrl->info->size);
+ }
+
-+ uvc_set_le_value(xctrl->value,
++ uvc_set_le_value(value,
+ uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), mapping);
+
+ ctrl->dirty = 1;
@@ -1490,10 +1619,10 @@
+
diff --git a/drivers/media/video/uvcvideo/uvc_driver.c b/drivers/media/video/uvcvideo/uvc_driver.c
new file mode 100644
-index 0000000..bd194fb
+index 0000000..6acfce1
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvc_driver.c
-@@ -0,0 +1,1877 @@
+@@ -0,0 +1,1920 @@
+/*
+ * uvcvideo.c -- USB Video Class driver
+ *
@@ -1539,10 +1668,16 @@
+#endif
+
+#include "uvcvideo.h"
++#include "version.h"
+
+#define DRIVER_AUTHOR "Laurent Pinchart <laurent.pinchart at skynet.be>"
+#define DRIVER_DESC "USB Video Class driver"
-+#define DRIVER_VERSION "0.1.0"
++#ifndef DRIVER_VERSION
++#define DRIVER_VERSION "v0.1.0"
++#endif
++
++static unsigned int uvc_quirks_param = 0;
++unsigned int uvc_trace_param = 0;
+
+/* ------------------------------------------------------------------------
+ * Control, formats, ...
@@ -1579,6 +1714,16 @@
+ .guid = UVC_GUID_FORMAT_UYVY,
+ .fcc = V4L2_PIX_FMT_UYVY,
+ },
++ {
++ .name = "Greyscale",
++ .guid = UVC_GUID_FORMAT_Y800,
++ .fcc = V4L2_PIX_FMT_GREY,
++ },
++ {
++ .name = "RGB Bayer",
++ .guid = UVC_GUID_FORMAT_BY8,
++ .fcc = V4L2_PIX_FMT_SBGGR8,
++ },
+};
+
+#if 0
@@ -2520,8 +2665,9 @@
+
+ case VC_PROCESSING_UNIT:
+ n = buflen >= 8 ? buffer[7] : 0;
++ p = dev->uvc_version >= 0x0110 ? 10 : 9;
+
-+ if (buflen < 8 + n) {
++ if (buflen < p + n) {
+ uvc_trace(UVC_TRACE_DESCR, "device %d videocontrol "
+ "interface %d PROCESSING_UNIT error\n", udev->devnum,
+ dev->intf->cur_altsetting->desc.bInterfaceNumber);
@@ -2539,7 +2685,8 @@
+ unit->processing.bControlSize = buffer[7];
+ unit->processing.bmControls = (__u8*)unit + sizeof *unit;
+ memcpy(unit->processing.bmControls, &buffer[8], n);
-+ unit->processing.bmVideoStandards = buffer[9+n];
++ if (dev->uvc_version >= 0x0110)
++ unit->processing.bmVideoStandards = buffer[9+n];
+
+ if (buffer[8+n] != 0)
+ usb_string(udev, buffer[8+n], unit->name, sizeof unit->name);
@@ -2919,14 +3066,6 @@
+ if (vdev == NULL)
+ return -1;
+
-+ if (dev->udev->product != NULL)
-+ strncpy(vdev->name, dev->udev->product, sizeof vdev->name);
-+ else
-+ snprintf(vdev->name, sizeof vdev->name,
-+ "UVC Camera (%04x:%04x)",
-+ le16_to_cpu(dev->udev->descriptor.idVendor),
-+ le16_to_cpu(dev->udev->descriptor.idProduct));
-+
+ /* We already hold a reference to dev->udev. The video device will be
+ * unregistered before the reference is released, so we don't need to
+ * get another one.
@@ -2937,6 +3076,7 @@
+ vdev->minor = -1;
+ vdev->fops = &uvc_fops;
+ vdev->release = video_device_release;
++ strncpy(vdev->name, dev->name, sizeof vdev->name);
+
+ /* Set the driver data before calling video_register_device, otherwise
+ * uvc_v4l2_open might race us.
@@ -3030,7 +3170,15 @@
+ dev->udev = usb_get_dev(udev);
+ dev->intf = usb_get_intf(intf);
+ dev->intfnum = intf->cur_altsetting->desc.bInterfaceNumber;
-+ dev->quirks = id->driver_info;
++ dev->quirks = id->driver_info | uvc_quirks_param;
++
++ if (udev->product != NULL)
++ strncpy(dev->name, udev->product, sizeof dev->name);
++ else
++ snprintf(dev->name, sizeof dev->name,
++ "UVC Camera (%04x:%04x)",
++ le16_to_cpu(udev->descriptor.idVendor),
++ le16_to_cpu(udev->descriptor.idProduct));
+
+ /* Parse the Video Class control descriptor */
+ if (uvc_parse_control(dev) < 0) {
@@ -3044,6 +3192,13 @@
+ le16_to_cpu(udev->descriptor.idVendor),
+ le16_to_cpu(udev->descriptor.idProduct));
+
++ if (uvc_quirks_param != 0) {
++ uvc_printk(KERN_INFO, "Forcing device quirks 0x%x by module "
++ "parameter for testing purpose.\n", uvc_quirks_param);
++ uvc_printk(KERN_INFO, "Please report required quirks to the "
++ "linux-uvc-devel mailing list.\n");
++ }
++
+ /* Initialize controls */
+ if (uvc_ctrl_init_device(dev) < 0)
+ goto error;
@@ -3213,14 +3368,6 @@
+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0 },
-+ /* Logitech Quickcam Communicator */
-+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
-+ | USB_DEVICE_ID_MATCH_INT_INFO,
-+ .idVendor = 0x046d,
-+ .idProduct = 0x08d7,
-+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
-+ .bInterfaceSubClass = 1,
-+ .bInterfaceProtocol = 0 },
+ /* Logitech Quickcam OEM Dell Notebook */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
@@ -3238,11 +3385,24 @@
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0 },
+ /* Apple Built-In iSight */
-+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE,
++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
++ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x05ac,
+ .idProduct = 0x8501,
++ .bInterfaceClass = USB_CLASS_VIDEO,
++ .bInterfaceSubClass = 1,
++ .bInterfaceProtocol = 0,
+ .driver_info = UVC_QUIRK_PROBE_MINMAX
+ | UVC_QUIRK_BUILTIN_ISIGHT },
++ /* Genesys Logic USB 2.0 PC Camera */
++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
++ | USB_DEVICE_ID_MATCH_INT_INFO,
++ .idVendor = 0x05e3,
++ .idProduct = 0x0505,
++ .bInterfaceClass = USB_CLASS_VIDEO,
++ .bInterfaceSubClass = 1,
++ .bInterfaceProtocol = 0,
++ .driver_info = UVC_QUIRK_STREAM_NO_FID },
+ /* Silicon Motion SM371 */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
@@ -3297,6 +3457,15 @@
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = UVC_QUIRK_PROBE_MINMAX },
++ /* Packard Bell OEM Webcam */
++ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
++ | USB_DEVICE_ID_MATCH_INT_INFO,
++ .idVendor = 0x5986,
++ .idProduct = 0x0101,
++ .bInterfaceClass = USB_CLASS_VIDEO,
++ .bInterfaceSubClass = 1,
++ .bInterfaceProtocol = 0,
++ .driver_info = UVC_QUIRK_PROBE_MINMAX },
+ /* Acer Crystal Eye webcam */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
@@ -3352,7 +3521,7 @@
+
+ result = usb_register(&uvc_driver.driver);
+ if (result == 0)
-+ printk(KERN_INFO DRIVER_DESC " (v" DRIVER_VERSION ")\n");
++ printk(KERN_INFO DRIVER_DESC " (" DRIVER_VERSION ")\n");
+ return result;
+}
+
@@ -3364,12 +3533,15 @@
+module_init(uvc_init);
+module_exit(uvc_cleanup);
+
-+unsigned int uvc_trace_param = 0;
++module_param_named(quirks, uvc_quirks_param, uint, S_IRUGO|S_IWUSR);
++MODULE_PARM_DESC(quirks, "Forced device quirks");
+module_param_named(trace, uvc_trace_param, uint, S_IRUGO|S_IWUSR);
++MODULE_PARM_DESC(trace, "Trace level bitmask");
+
+MODULE_AUTHOR(DRIVER_AUTHOR);
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPL");
++MODULE_VERSION(DRIVER_VERSION);
+
diff --git a/drivers/media/video/uvcvideo/uvc_isight.c b/drivers/media/video/uvcvideo/uvc_isight.c
new file mode 100644
@@ -3519,10 +3691,10 @@
+}
diff --git a/drivers/media/video/uvcvideo/uvc_queue.c b/drivers/media/video/uvcvideo/uvc_queue.c
new file mode 100644
-index 0000000..4957109
+index 0000000..d7e4461
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvc_queue.c
-@@ -0,0 +1,414 @@
+@@ -0,0 +1,463 @@
+/*
+ * uvcvideo.c -- USB Video Class driver
+ *
@@ -3705,7 +3877,7 @@
+ return 0;
+}
+
-+void uvc_query_buffer(struct uvc_buffer *buf,
++static void __uvc_query_buffer(struct uvc_buffer *buf,
+ struct v4l2_buffer *v4l2_buf)
+{
+ memcpy(v4l2_buf, &buf->buf, sizeof *v4l2_buf);
@@ -3728,6 +3900,24 @@
+ }
+}
+
++int uvc_query_buffer(struct uvc_video_queue *queue,
++ struct v4l2_buffer *v4l2_buf)
++{
++ int ret = 0;
++
++ mutex_lock(&queue->mutex);
++ if (v4l2_buf->index >= queue->count) {
++ ret = -EINVAL;
++ goto done;
++ }
++
++ __uvc_query_buffer(&queue->buffer[v4l2_buf->index], v4l2_buf);
++
++done:
++ mutex_unlock(&queue->mutex);
++ return ret;
++}
++
+/*
+ * Queue a video buffer. Attempting to queue a buffer that has already been
+ * queued will return -EINVAL.
@@ -3813,11 +4003,13 @@
+ goto done;
+ }
+
-+ buf = list_entry(queue->mainqueue.next, struct uvc_buffer, stream);
-+ uvc_trace(UVC_TRACE_CAPTURE, "Dequeuing buffer %u.\n", buf->buf.index);
++ buf = list_first_entry(&queue->mainqueue, struct uvc_buffer, stream);
+ if ((ret = uvc_queue_waiton(buf, nonblocking)) < 0)
+ goto done;
+
++ uvc_trace(UVC_TRACE_CAPTURE, "Dequeuing buffer %u (%u, %u bytes).\n",
++ buf->buf.index, buf->state, buf->buf.bytesused);
++
+ switch (buf->state) {
+ case UVC_BUF_STATE_ERROR:
+ uvc_trace(UVC_TRACE_CAPTURE, "[W] Corrupted data "
@@ -3838,7 +4030,7 @@
+ }
+
+ list_del(&buf->stream);
-+ uvc_query_buffer(buf, v4l2_buf);
++ __uvc_query_buffer(buf, v4l2_buf);
+
+done:
+ mutex_unlock(&queue->mutex);
@@ -3846,6 +4038,35 @@
+}
+
+/*
++ * Poll the video queue.
++ *
++ * This function implements video queue polling and is intended to be used by
++ * the device poll handler.
++ */
++unsigned int uvc_queue_poll(struct uvc_video_queue *queue, struct file *file,
++ poll_table *wait)
++{
++ struct uvc_buffer *buf;
++ unsigned int mask = 0;
++
++ mutex_lock(&queue->mutex);
++ if (list_empty(&queue->mainqueue)) {
++ mask |= POLLERR;
++ goto done;
++ }
++ buf = list_first_entry(&queue->mainqueue, struct uvc_buffer, stream);
++
++ poll_wait(file, &buf->wait, wait);
++ if (buf->state == UVC_BUF_STATE_DONE ||
++ buf->state == UVC_BUF_STATE_ERROR)
++ mask |= POLLIN | POLLRDNORM;
++
++done:
++ mutex_unlock(&queue->mutex);
++ return mask;
++}
++
++/*
+ * Enable or disable the video buffers queue.
+ *
+ * The queue must be enabled before starting video acquisition and must be
@@ -3907,7 +4128,7 @@
+
+ spin_lock_irqsave(&queue->irqlock, flags);
+ while (!list_empty(&queue->irqqueue)) {
-+ buf = list_entry(queue->irqqueue.next, struct uvc_buffer, queue);
++ buf = list_first_entry(&queue->irqqueue, struct uvc_buffer, queue);
+ list_del(&buf->queue);
+ buf->state = UVC_BUF_STATE_ERROR;
+ wake_up(&buf->wait);
@@ -3924,7 +4145,7 @@
+ spin_lock_irqsave(&queue->irqlock, flags);
+ list_del(&buf->queue);
+ if (!list_empty(&queue->irqqueue))
-+ nextbuf = list_entry(queue->irqqueue.next, struct uvc_buffer,
++ nextbuf = list_first_entry(&queue->irqqueue, struct uvc_buffer,
+ queue);
+ else
+ nextbuf = NULL;
@@ -3939,10 +4160,10 @@
+
diff --git a/drivers/media/video/uvcvideo/uvc_status.c b/drivers/media/video/uvcvideo/uvc_status.c
new file mode 100644
-index 0000000..a944152
+index 0000000..4be8de4
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvc_status.c
-@@ -0,0 +1,153 @@
+@@ -0,0 +1,220 @@
+/*
+ * uvc_status.c -- USB Video Class driver
+ *
@@ -3957,10 +4178,72 @@
+ */
+
+#include <linux/kernel.h>
++#include <linux/version.h>
++#include <linux/input.h>
+#include <linux/usb.h>
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
++#include <linux/usb_input.h>
++#else
++#include <linux/usb/input.h>
++#endif
+
+#include "uvcvideo.h"
+
++/* --------------------------------------------------------------------------
++ * Input device
++ */
++static int uvc_input_init(struct uvc_device *dev)
++{
++ struct usb_device *udev = dev->udev;
++ struct input_dev *input;
++ char *phys = NULL;
++ int ret;
++
++ input = input_allocate_device();
++ if (input == NULL)
++ return -ENOMEM;
++
++ phys = kmalloc(6 + strlen(udev->bus->bus_name) + strlen(udev->devpath),
++ GFP_KERNEL);
++ if (phys == NULL) {
++ ret = -ENOMEM;
++ goto error;
++ }
++ sprintf(phys, "usb-%s-%s", udev->bus->bus_name, udev->devpath);
++
++ input->name = dev->name;
++ input->phys = phys;
++ usb_to_input_id(udev, &input->id);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
++ input->dev.parent = &dev->intf->dev;
++#else
++ input->cdev.dev = &dev->intf->dev;
++#endif
++
++ set_bit(EV_KEY, input->evbit);
++ set_bit(BTN_0, input->keybit);
++
++ if ((ret = input_register_device(input)) < 0)
++ goto error;
++
++ dev->input = input;
++ return 0;
++
++error:
++ input_free_device(input);
++ kfree(phys);
++ return ret;
++}
++
++static void uvc_input_cleanup(struct uvc_device *dev)
++{
++ if (dev->input)
++ input_unregister_device(dev->input);
++}
++
++/* --------------------------------------------------------------------------
++ * Status interrupt endpoint
++ */
+static void uvc_event_streaming(struct uvc_device *dev, __u8 *data, int len)
+{
+ if (len < 3) {
@@ -3974,6 +4257,8 @@
+ return;
+ uvc_trace(UVC_TRACE_STATUS, "Button (intf %u) %s len %d\n",
+ data[1], data[3] ? "pressed" : "released", len);
++ if (dev->input)
++ input_report_key(dev->input, BTN_0, data[3]);
+ } else {
+ uvc_trace(UVC_TRACE_STATUS, "Stream %u error event %02x %02x "
+ "len %d.\n", data[1], data[2], data[3], len);
@@ -4055,6 +4340,8 @@
+ if (ep == NULL)
+ return 0;
+
++ uvc_input_init(dev);
++
+ dev->int_urb = usb_alloc_urb(0, GFP_KERNEL);
+ if (dev->int_urb == NULL)
+ return -ENOMEM;
@@ -4080,6 +4367,7 @@
+{
+ usb_kill_urb(dev->int_urb);
+ usb_free_urb(dev->int_urb);
++ uvc_input_cleanup(dev);
+}
+
+int uvc_status_suspend(struct uvc_device *dev)
@@ -4098,10 +4386,10 @@
+
diff --git a/drivers/media/video/uvcvideo/uvc_v4l2.c b/drivers/media/video/uvcvideo/uvc_v4l2.c
new file mode 100644
-index 0000000..fcd2c6e
+index 0000000..c335758
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvc_v4l2.c
-@@ -0,0 +1,1112 @@
+@@ -0,0 +1,1087 @@
+/*
+ * uvcvideo.c -- USB Video Class driver
+ *
@@ -4150,22 +4438,17 @@
+ struct uvc_menu_info *menu_info;
+ struct uvc_control_mapping *mapping;
+ struct uvc_control *ctrl;
-+ __u32 i;
+
+ ctrl = uvc_find_control(video, query_menu->id, &mapping);
+ if (ctrl == NULL || mapping->v4l2_type != V4L2_CTRL_TYPE_MENU)
+ return -EINVAL;
+
-+ menu_info = mapping->menu_info;
-+
-+ for (i = 0; i < mapping->menu_count; ++i, ++menu_info) {
-+ if (query_menu->index == menu_info->index) {
-+ strncpy(query_menu->name, menu_info->name, 32);
-+ return 0;
-+ }
-+ }
++ if (query_menu->index >= mapping->menu_count)
++ return -EINVAL;
+
-+ return -EINVAL;
++ menu_info = &mapping->menu_info[query_menu->index];
++ strncpy(query_menu->name, menu_info->name, 32);
++ return 0;
+}
+
+/*
@@ -4706,7 +4989,7 @@
+ if (selector == NULL) {
+ if (index != 0)
+ return -EINVAL;
-+ iterm = list_entry(video->iterms.next,
++ iterm = list_first_entry(&video->iterms,
+ struct uvc_entity, chain);
+ pin = iterm->id;
+ } else if (pin < selector->selector.bNrInPins) {
@@ -4949,19 +5232,15 @@
+ case VIDIOC_QUERYBUF:
+ {
+ struct v4l2_buffer *buf = arg;
-+ struct uvc_buffer *ubuf;
+
-+ if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
-+ buf->index >= video->queue.count)
++ if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ return -EINVAL;
+
+ if (!uvc_has_privileges(handle))
+ return -EBUSY;
+
-+ ubuf = &video->queue.buffer[buf->index];
-+ uvc_query_buffer(ubuf, buf);
++ return uvc_query_buffer(&video->queue, buf);
+ }
-+ break;
+
+ case VIDIOC_QBUF:
+ if (!uvc_has_privileges(handle))
@@ -5178,26 +5457,10 @@
+{
+ struct video_device *vdev = video_devdata(file);
+ struct uvc_video_device *video = video_get_drvdata(vdev);
-+ struct uvc_buffer *buf;
-+ unsigned int mask = 0;
+
+ uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_poll\n");
+
-+ mutex_lock(&video->queue.mutex);
-+ if (list_empty(&video->queue.mainqueue)) {
-+ mask |= POLLERR;
-+ goto done;
-+ }
-+ buf = list_entry(video->queue.mainqueue.next, struct uvc_buffer, stream);
-+
-+ poll_wait(file, &buf->wait, wait);
-+ if (buf->state == UVC_BUF_STATE_DONE ||
-+ buf->state == UVC_BUF_STATE_ERROR)
-+ mask |= POLLIN | POLLRDNORM;
-+
-+done:
-+ mutex_unlock(&video->queue.mutex);
-+ return mask;
++ return uvc_queue_poll(&video->queue, file, wait);
+}
+
+struct file_operations uvc_fops = {
@@ -5216,10 +5479,10 @@
+
diff --git a/drivers/media/video/uvcvideo/uvc_video.c b/drivers/media/video/uvcvideo/uvc_video.c
new file mode 100644
-index 0000000..2f33732
+index 0000000..cb89a7a
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvc_video.c
-@@ -0,0 +1,913 @@
+@@ -0,0 +1,922 @@
+/*
+ * uvcvideo.c -- USB Video Class driver
+ *
@@ -5242,6 +5505,7 @@
+#include <linux/vmalloc.h>
+#include <linux/wait.h>
+#include <asm/atomic.h>
++#include <asm/unaligned.h>
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15)
+#include <media/v4l2-common.h>
@@ -5309,11 +5573,14 @@
+ ctrl->wCompQuality = le16_to_cpup((__le16*)&data[12]);
+ ctrl->wCompWindowSize = le16_to_cpup((__le16*)&data[14]);
+ ctrl->wDelay = le16_to_cpup((__le16*)&data[16]);
-+ ctrl->dwMaxVideoFrameSize = le32_to_cpup((__le32*)&data[18]);
-+ ctrl->dwMaxPayloadTransferSize = le32_to_cpup((__le32*)&data[22]);
++ ctrl->dwMaxVideoFrameSize =
++ le32_to_cpu(get_unaligned((__le32*)&data[18]));
++ ctrl->dwMaxPayloadTransferSize =
++ le32_to_cpu(get_unaligned((__le32*)&data[22]));
+
+ if (size == 34) {
-+ ctrl->dwClockFrequency = le32_to_cpup((__le32*)&data[26]);
++ ctrl->dwClockFrequency =
++ le32_to_cpu(get_unaligned((__le32*)&data[26]));
+ ctrl->bmFramingInfo = data[30];
+ ctrl->bPreferedVersion = data[31];
+ ctrl->bMinVersion = data[32];
@@ -5335,9 +5602,11 @@
+ struct uvc_format *format = NULL;
+ struct uvc_frame *frame = NULL;
+
-+ if (ctrl->bFormatIndex <= video->streaming->nformats)
++ if (ctrl->bFormatIndex <= video->streaming->nformats &&
++ ctrl->bFormatIndex != 0)
+ format = &video->streaming->format[ctrl->bFormatIndex - 1];
-+ if (format && ctrl->bFrameIndex <= format->nframes) {
++ if (format && ctrl->bFrameIndex <= format->nframes &&
++ ctrl->bFrameIndex != 0) {
+ frame = &format->frame[ctrl->bFrameIndex - 1];
+ ctrl->dwMaxVideoFrameSize = frame->dwMaxVideoFrameBufferSize;
+ }
@@ -5367,11 +5636,14 @@
+ /* Note: Some of the fields below are not required for IN devices (see
+ * UVC spec, 4.3.1.1), but we still copy them in case support for OUT
+ * devices is added in the future. */
-+ *(__le32*)&data[18] = cpu_to_le32(ctrl->dwMaxVideoFrameSize);
-+ *(__le32*)&data[22] = cpu_to_le32(ctrl->dwMaxPayloadTransferSize);
++ put_unaligned(cpu_to_le32(ctrl->dwMaxVideoFrameSize),
++ (__le32*)&data[18]);
++ put_unaligned(cpu_to_le32(ctrl->dwMaxPayloadTransferSize),
++ (__le32*)&data[22]);
+
+ if (size == 34) {
-+ *(__le32*)&data[26] = cpu_to_le32(ctrl->dwClockFrequency);
++ put_unaligned(cpu_to_le32(ctrl->dwClockFrequency),
++ (__le32*)&data[26]);
+ data[30] = ctrl->bmFramingInfo;
+ data[31] = ctrl->bPreferedVersion;
+ data[32] = ctrl->bMinVersion;
@@ -5744,7 +6016,7 @@
+
+ spin_lock_irqsave(&queue->irqlock, flags);
+ if (!list_empty(&queue->irqqueue))
-+ buf = list_entry(queue->irqqueue.next, struct uvc_buffer, queue);
++ buf = list_first_entry(&queue->irqqueue, struct uvc_buffer, queue);
+ spin_unlock_irqrestore(&queue->irqlock, flags);
+
+ video->decode(urb, video, buf);
@@ -6135,10 +6407,10 @@
+
diff --git a/drivers/media/video/uvcvideo/uvcvideo.h b/drivers/media/video/uvcvideo/uvcvideo.h
new file mode 100644
-index 0000000..73b2146
+index 0000000..fb755c2
--- /dev/null
+++ b/drivers/media/video/uvcvideo/uvcvideo.h
-@@ -0,0 +1,787 @@
+@@ -0,0 +1,771 @@
+#ifndef _USB_VIDEO_H_
+#define _USB_VIDEO_H_
+
@@ -6149,32 +6421,6 @@
+#include "uvc_compat.h"
+
+/*
-+ * Private V4L2 control identifiers.
-+ */
-+
-+#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_PRIVATE_BASE+0)
-+#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_PRIVATE_BASE+1)
-+#define V4L2_CID_SHARPNESS (V4L2_CID_PRIVATE_BASE+2)
-+#define V4L2_CID_HUE_AUTO (V4L2_CID_PRIVATE_BASE+3)
-+
-+#define V4L2_CID_FOCUS_AUTO (V4L2_CID_PRIVATE_BASE+4)
-+#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_PRIVATE_BASE+5)
-+#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_PRIVATE_BASE+6)
-+
-+#define V4L2_CID_PAN_RELATIVE (V4L2_CID_PRIVATE_BASE+7)
-+#define V4L2_CID_TILT_RELATIVE (V4L2_CID_PRIVATE_BASE+8)
-+#define V4L2_CID_PANTILT_RESET (V4L2_CID_PRIVATE_BASE+9)
-+
-+#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_PRIVATE_BASE+10)
-+#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_PRIVATE_BASE+11)
-+#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_PRIVATE_BASE+14)
-+
-+#define V4L2_CID_WHITE_BALANCE_TEMPERATURE_AUTO (V4L2_CID_PRIVATE_BASE+12)
-+#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_PRIVATE_BASE+13)
-+
-+#define V4L2_CID_PRIVATE_LAST V4L2_CID_EXPOSURE_AUTO_PRIORITY
-+
-+/*
+ * Dynamic controls
+ */
+/* Data types for UVC control data */
@@ -6236,6 +6482,8 @@
+
+#ifdef __KERNEL__
+
++#include <linux/poll.h>
++
+/* --------------------------------------------------------------------------
+ * UVC constants
+ */
@@ -6434,6 +6682,10 @@
+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
+#define UVC_GUID_FORMAT_UYVY { 'U', 'Y', 'V', 'Y', 0x00, 0x00, 0x10, 0x00, \
+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
++#define UVC_GUID_FORMAT_Y800 { 'Y', '8', '0', '0', 0x00, 0x00, 0x10, 0x00, \
++ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
++#define UVC_GUID_FORMAT_BY8 { 'B', 'Y', '8', ' ', 0x00, 0x00, 0x10, 0x00, \
++ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
+
+
+/* ------------------------------------------------------------------------
@@ -6494,7 +6746,7 @@
+};
+
+struct uvc_menu_info {
-+ __u32 index;
++ __u32 value;
+ __u8 name[32];
+};
+
@@ -6705,8 +6957,8 @@
+ unsigned int count;
+ unsigned int buf_size;
+ struct uvc_buffer buffer[UVC_MAX_VIDEO_BUFFERS];
-+ struct mutex mutex;
-+ spinlock_t irqlock;
++ struct mutex mutex; /* protects buffers and mainqueue */
++ spinlock_t irqlock; /* protects irqqueue */
+
+ struct list_head mainqueue;
+ struct list_head irqqueue;
@@ -6756,6 +7008,7 @@
+ struct usb_interface *intf;
+ __u32 quirks;
+ int intfnum;
++ char name[32];
+
+ enum uvc_device_state state;
+ struct kref kref;
@@ -6773,6 +7026,7 @@
+ struct usb_host_endpoint *int_ep;
+ struct urb *int_urb;
+ __u8 status[16];
++ struct input_dev *input;
+
+ /* Video Streaming interfaces */
+ struct list_head streaming;
@@ -6846,7 +7100,7 @@
+extern int uvc_alloc_buffers(struct uvc_video_queue *queue,
+ unsigned int nbuffers, unsigned int buflength);
+extern int uvc_free_buffers(struct uvc_video_queue *queue);
-+extern void uvc_query_buffer(struct uvc_buffer *buf,
++extern int uvc_query_buffer(struct uvc_video_queue *queue,
+ struct v4l2_buffer *v4l2_buf);
+extern int uvc_queue_buffer(struct uvc_video_queue *queue,
+ struct v4l2_buffer *v4l2_buf);
@@ -6856,6 +7110,8 @@
+extern void uvc_queue_cancel(struct uvc_video_queue *queue);
+extern struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
+ struct uvc_buffer *buf);
++extern unsigned int uvc_queue_poll(struct uvc_video_queue *queue,
++ struct file *file, poll_table *wait);
+
+/* V4L2 interface */
+extern struct file_operations uvc_fops;
@@ -6926,3 +7182,10 @@
+
+#endif
+
+diff --git a/drivers/media/video/uvcvideo/version.h b/drivers/media/video/uvcvideo/version.h
+new file mode 100644
+index 0000000..503c00c
+--- /dev/null
++++ b/drivers/media/video/uvcvideo/version.h
+@@ -0,0 +1 @@
++#define DRIVER_VERSION "SVN r200"
linux-2.6-wireless-pending.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.43 -r 1.44 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-wireless-pending.patch,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- linux-2.6-wireless-pending.patch 9 May 2008 22:39:12 -0000 1.43
+++ linux-2.6-wireless-pending.patch 21 May 2008 21:22:40 -0000 1.44
@@ -1,99999 +1,13786 @@
-commit 61c2b682b8391f13b67e2d95990a0aba34697d9c
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date: Mon Apr 21 19:01:09 2008 +0200
+commit 297c3669dd481e977927dc123ed3deed10833e2a
+Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
+Date: Wed May 14 16:27:18 2008 +0200
- rt2x00: Fix quality/activity led handling
+ libertas: remove lbs_get_data_rate()
- There was an obvious typo in LED structure
- initialization which caused the radio and quality/activity
- leds to be incorrectly initialized which resulted in
- the leds not being enabled.
-
- Additionally add the rt2x00led_led_activity() handler
- that will enable TX/RX activity leds when the radio
- is being enabled.
+ lbs_get_data_rate() gets called, but no-one uses it's result.
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 44a9809b97ec5acd1c549c3120bdd35613897d7c
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date: Mon Apr 21 19:00:17 2008 +0200
+commit 7cb92ee3af4f32ae278c6aad4d9c49fb52a99a66
+Author: Harvey Harrison <harvey.harrison at gmail.com>
+Date: Tue May 13 18:13:35 2008 -0700
- rt2x00: Don't enable short preamble for 1MBs
+ b43: use the bitrev helpers rather than rolling a private one
- The timing settings for 1MBs should exclude
- the short preamble bit since that only applies
- to 2MBs, 5.5MBs and 11MBs.
+ The 4-bit reversal flip_4bit is replaced with the bitrev helper
+ bitrev8 and a 4-bit shift. The B43_WARN is moved to the location
+ where a register is read from for checking there. The other caller
+ explicitly passes an array index which is guaranteed to be within range
+ and so a B43_WARN is not added there.
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: Harvey Harrison <harvey.harrison at gmail.com>
+ Reviewed-by: Michael Buesch <mb at bu3sch.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 2218228392080f0ca2fc2974604e79f57b12c436
-Author: Kirill A. Shutemov <kirill at shutemov.name>
-Date: Tue Apr 22 16:38:55 2008 +0300
+commit 8c122e14ca821402b9181f16494d9f11169deeae
+Author: Bob Copeland <me at bobcopeland.com>
+Date: Mon May 12 21:16:44 2008 -0400
- Make linux/wireless.h be able to compile
+ ath5k: Fix loop variable initializations
- Signed-off-by: Kirill A. Shutemov <kirill at shutemov.name>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 786b4557075ae0d8a23e73c316dc4204b41ccb4d
-Author: Bill Moss <bmoss at clemson.edu>
-Date: Thu Apr 17 16:03:40 2008 -0700
-
- iwlwifi: fix debug messages during scanning
+ In ath5k_tasklet_rx, both status structures 'rxs' and 'rs' are
+ initialized at the top of the tasklet, but not within the loop.
+ If the loop is executed multiple times in the tasklet then the
+ variables may see changes from previous packets.
- direct_mask will be set when we are not associated and requesting a
- direct scan. The second debug print will be confusing as priv->essid
- is not set at that time and it will thus print "<hidden>" while it is
- known to which AP a direct scan is requested - as previous debug message
- also indicates.
+ For TKIP, this results in 'Invalid Michael MIC' errors if two packets
+ are processed in the tasklet: rxs.flag gets set to RX_DECRYPTED by
+ mac80211 when it decrypts the first encrypted packet. The subsequent
+ packet will have RX_DECRYPTED set upon entry to mac80211, so mac80211
+ will not try to decrypt it.
- Now make all debugging consistent.
+ We currently initialize all but two fields in the structures, so fix
+ the other two.
- Signed-off-by: Bill Moss <bmoss at clemson.edu>
- Signed-off-by: Reinette Chatre <reinette.chatre at intel.com>
+ Signed-off-by: Bob Copeland <me at bobcopeland.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit f52764886540b16e7962bd1d150bd939aec9248c
-Author: Guy Cohen <guy.cohen at intel.com>
-Date: Mon Apr 21 15:41:57 2008 -0700
+commit 01669110ba331be385af8d5310ff6c3b93b09620
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Tue May 13 15:03:02 2008 +0200
- iwlwifi: fix current channel is not scanned
+ mac80211: Set IEEE80211_TXPD_REQ_TX_STATUS for all TX frames
- All channels should be scanned, including the current channel
- when the client is associated.
+ All interfaces should set the IEEE80211_TXPD_REQ_TX_STATUS flag for all TX frames
+ which will force the master interface to set the IEEE80211_TX_CTL_REQ_TX_STATUS
+ flag. This in turn will allow drivers to check for that flag before reporting
+ the TX status to mac80211.
- Removed also unused flag to scan only active channels.
+ This is very usefull when frames (like beacons, RTS and CTS-to-self) should not
+ be reported back to mac80211. Later we could add more extensive checks to
+ exclude more frames from being reported, or let mac80211 decide if it wants
+ the frame for status reporting or not.
- Signed-off-by: Guy Cohen <guy.cohen at intel.com>
- Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
- Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ v2: Monitor interfaces should also set IEEE80211_TXPD_REQ_TX_STATUS
+
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Acked-by: Johannes Berg <johannes at sipsolutions.net>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 21a75d7788f4e29b6c6d28e08f9f0310c4de828d
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Fri Apr 25 19:29:08 2008 +0200
+commit 5e15aedb1d67c2d31643edc3fa282647b0f3befb
+Author: Huang Weiyi <weiyi.huang at gmail.com>
+Date: Sat May 10 11:12:31 2008 +0200
- b43: Fix some TX/RX locking issues
+ b43: nphy.c remove duplicated include
- This fixes some TX/RX related locking issues.
- With this patch applied, some of the PHY transmission errors are fixed.
+ Remove duplicated include <linux/delay.h> in
+ drivers/net/wireless/b43/nphy.c
+ Signed-off-by: Huang Weiyi <weiyi.huang at gmail.com>
Signed-off-by: Michael Buesch <mb at bu3sch.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit c0d43990768b6ca83604ff4be80425b89d317e2f
-Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
-Date: Tue Apr 29 10:07:56 2008 +0200
+commit 7ce2d429578b4e32ea68d60e7f16a2a7bb17dada
+Author: Eric W. Biederman <ebiederm at xmission.com>
+Date: Thu May 8 14:30:18 2008 -0700
- libertas: fix use-before-check violation
+ wireless: Add missing locking to cfg80211_dev_rename
- According to Coverity (kudo's to Adrian Bunk), we had one use-before-check
- bug in libe libertas driver. This patch fixes this issue.
-
- Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 2e35af143a1380173ba292e48e9b4913ef16b4ee
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Sun Apr 27 19:06:18 2008 +0200
-
- b43: Fix dual-PHY devices
+ device_rename only performs useful and race free validity
+ checking at the optional sysfs level so depending on it
+ for all of the validity checking in cfg80211_dev_rename
+ is racy.
- This fixes operation of dual-PHY (A/B/G) devices.
- Do not anounce the A-PHY to mac80211, as that's not supported, yet.
+ Instead implement all of the needed validity checking
+ and locking in cfg80211_dev_rename.
- Signed-off-by: Michael Buesch <mb at bu3sch.de>
+ Signed-off-by: Eric W. Biederman <ebiederm at xmission.com>
+ Acked-by: Johannes Berg <johannes at sipsolutions.net>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 17f830459d6116ae13dbcfc9d09a406e6717b1a6
-Author: Harvey Harrison <harvey.harrison at gmail.com>
-Date: Sun Apr 27 03:48:40 2008 -0700
+commit 54a5c8046dce102c1a435ca5a95f5c0699662d21
+Author: Bruno Randolf <br1 at einfach.org>
+Date: Thu May 8 19:22:43 2008 +0200
- mac80211: incorrect shift direction
+ mac80211: make rx radiotap header more flexible
- Looks like 5d2cdcd4e85c5187db30a6b29f79fbbe59f39f78 ("mac80211: get a
- TKIP phase key from skb") got the shifts wrong.
+ use hw flags and rx flags to determine which fields are present in the header
[...156085 lines suppressed...]
-+ <para>TBD</para>
-+ <para>Some parts of the if_conf should be discussed here instead</para>
-+ <para>
-+ Insert notes about VLAN interfaces with hw crypto here or
-+ in the hw crypto chapter.
-+ </para>
-+!Finclude/net/mac80211.h ieee80211_get_buffered_bc
-+!Finclude/net/mac80211.h ieee80211_beacon_get
-+ </chapter>
-+
-+ <chapter id="multi-iface">
-+ <title>Supporting multiple virtual interfaces</title>
-+ <para>TBD</para>
-+ <para>
-+ Note: WDS with identical MAC address should almost always be OK
-+ </para>
-+ <para>
-+ Insert notes about having multiple virtual interfaces with
-+ different MAC addresses here, note which configurations are
-+ supported by mac80211, add notes about supporting hw crypto
-+ with it.
-+ </para>
-+ </chapter>
-+
-+ <chapter id="hardware-scan-offload">
-+ <title>Hardware scan offload</title>
-+ <para>TBD</para>
-+!Finclude/net/mac80211.h ieee80211_scan_completed
-+ </chapter>
-+ </part>
-+
-+ <part id="rate-control">
-+ <title>Rate control interface</title>
-+ <partintro>
-+ <para>TBD</para>
-+ <para>
-+ This part of the book describes the rate control algorithm
-+ interface and how it relates to mac80211 and drivers.
-+ </para>
-+ </partintro>
-+ <chapter id="dummy">
-+ <title>dummy chapter</title>
-+ <para>TBD</para>
-+ </chapter>
-+ </part>
-+
-+ <part id="internal">
-+ <title>Internals</title>
-+ <partintro>
-+ <para>TBD</para>
-+ <para>
-+ This part of the book describes mac80211 internals.
-+ </para>
-+ </partintro>
-+
-+ <chapter id="key-handling">
-+ <title>Key handling</title>
-+ <sect1>
-+ <title>Key handling basics</title>
-+!Pnet/mac80211/key.c Key handling basics
-+ </sect1>
-+ <sect1>
-+ <title>MORE TBD</title>
-+ <para>TBD</para>
-+ </sect1>
-+ </chapter>
-+
-+ <chapter id="rx-processing">
-+ <title>Receive processing</title>
-+ <para>TBD</para>
-+ </chapter>
-+
-+ <chapter id="tx-processing">
-+ <title>Transmit processing</title>
-+ <para>TBD</para>
-+ </chapter>
-+
-+ <chapter id="sta-info">
-+ <title>Station info handling</title>
-+ <sect1>
-+ <title>Programming information</title>
-+!Fnet/mac80211/sta_info.h sta_info
-+!Fnet/mac80211/sta_info.h ieee80211_sta_info_flags
-+ </sect1>
-+ <sect1>
-+ <title>STA information lifetime rules</title>
-+!Pnet/mac80211/sta_info.c STA information lifetime rules
-+ </sect1>
-+ </chapter>
-+
-+ <chapter id="synchronisation">
-+ <title>Synchronisation</title>
-+ <para>TBD</para>
-+ <para>Locking, lots of RCU</para>
-+ </chapter>
-+ </part>
-+</book>
-diff -up linux-2.6.24.noarch/Documentation/DocBook/Makefile.orig linux-2.6.24.noarch/Documentation/DocBook/Makefile
---- linux-2.6.24.noarch/Documentation/DocBook/Makefile.orig 2008-05-09 18:11:45.000000000 -0400
-+++ linux-2.6.24.noarch/Documentation/DocBook/Makefile 2008-05-09 18:12:23.000000000 -0400
-@@ -11,7 +11,8 @@ DOCBOOKS := wanbook.xml z8530book.xml mc
- procfs-guide.xml writing_usb_driver.xml \
- kernel-api.xml filesystems.xml lsm.xml utrace.xml usb.xml \
- gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
-- genericirq.xml s390-drivers.xml uio-howto.xml
-+ genericirq.xml s390-drivers.xml uio-howto.xml \
-+ mac80211.xml
-
- ###
- # The build process is as follows (targets):
-diff -up linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt.orig linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt
---- linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt.orig 2008-05-09 18:11:45.000000000 -0400
-+++ linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt 2008-05-09 18:12:23.000000000 -0400
-@@ -332,31 +332,6 @@ Why: This driver has been marked obsolet
- 2.4 or later kernels, provides richer features and is more robust.
- Who: Stephen Hemminger <shemminger at linux-foundation.org>
-
--What: bcm43xx wireless network driver
--When: 2.6.26
--Files: drivers/net/wireless/bcm43xx
--Why: This driver's functionality has been replaced by the
-- mac80211-based b43 and b43legacy drivers.
--Who: John W. Linville <linville at tuxdriver.com>
--
-----------------------------
--
--What: ieee80211 softmac wireless networking component
--When: 2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
--Files: net/ieee80211/softmac
--Why: No in-kernel drivers will depend on it any longer.
--Who: John W. Linville <linville at tuxdriver.com>
--
-----------------------------
--
--What: rc80211-simple rate control algorithm for mac80211
--When: 2.6.26
--Files: net/mac80211/rc80211-simple.c
--Why: This algorithm was provided for reference but always exhibited bad
-- responsiveness and performance and has some serious flaws. It has been
-- replaced by rc80211-pid.
--Who: Stefano Brivio <stefano.brivio at polimi.it>
--
- ---------------------------
+ return 0;
+ }
+@@ -446,9 +445,9 @@ static void adm8211_interrupt_rci(struct
+ struct ieee80211_rx_status rx_status = {0};
+
+ if (priv->pdev->revision < ADM8211_REV_CA)
+- rx_status.ssi = rssi;
++ rx_status.signal = rssi;
+ else
+- rx_status.ssi = 100 - rssi;
++ rx_status.signal = 100 - rssi;
+
+ rx_status.rate_idx = rate;
+
+@@ -1894,9 +1893,10 @@ static int __devinit adm8211_probe(struc
+
+ dev->extra_tx_headroom = sizeof(struct adm8211_tx_hdr);
+ /* dev->flags = IEEE80211_HW_RX_INCLUDES_FCS in promisc mode */
++ dev->flags = IEEE80211_HW_SIGNAL_UNSPEC;
+
+ dev->channel_change_time = 1000;
+- dev->max_rssi = 100; /* FIXME: find better value */
++ dev->max_signal = 100; /* FIXME: find better value */
+
+ dev->queues = 1; /* ADM8211C supports more, maybe ADM8211B too */
- What: b43 support for firmware revision < 410
+diff -up linux-2.6.25.noarch/drivers/ssb/pci.c.orig linux-2.6.25.noarch/drivers/ssb/pci.c
+--- linux-2.6.25.noarch/drivers/ssb/pci.c.orig 2008-05-19 17:24:59.000000000 -0400
++++ linux-2.6.25.noarch/drivers/ssb/pci.c 2008-05-19 17:26:13.000000000 -0400
+@@ -510,17 +510,15 @@ static int ssb_pci_sprom_get(struct ssb_
+ sprom_do_read(bus, buf);
+ err = sprom_check_crc(buf, bus->sprom_size);
+ if (err) {
+- /* check for rev 4 sprom - has special signature */
+- if (buf[32] == 0x5372) {
+- kfree(buf);
+- buf = kcalloc(SSB_SPROMSIZE_WORDS_R4, sizeof(u16),
+- GFP_KERNEL);
+- if (!buf)
+- goto out;
+- bus->sprom_size = SSB_SPROMSIZE_WORDS_R4;
+- sprom_do_read(bus, buf);
+- err = sprom_check_crc(buf, bus->sprom_size);
+- }
++ /* try for a 440 byte SPROM - revision 4 and higher */
++ kfree(buf);
++ buf = kcalloc(SSB_SPROMSIZE_WORDS_R4, sizeof(u16),
++ GFP_KERNEL);
++ if (!buf)
++ goto out;
++ bus->sprom_size = SSB_SPROMSIZE_WORDS_R4;
++ sprom_do_read(bus, buf);
++ err = sprom_check_crc(buf, bus->sprom_size);
+ if (err)
+ ssb_printk(KERN_WARNING PFX "WARNING: Invalid"
+ " SPROM CRC (corrupt SPROM)\n");
linux-2.6-wireless.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.36 -r 1.37 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-wireless.patch,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- linux-2.6-wireless.patch 15 Apr 2008 21:12:56 -0000 1.36
+++ linux-2.6-wireless.patch 21 May 2008 21:22:41 -0000 1.37
@@ -1,10042 +1,8991 @@
-commit dc4ae1f46dbbcd08b3b5e23ad5ef87bf4bb41adf
-Author: Stefano Brivio <stefano.brivio at polimi.it>
-Date: Mon Apr 14 00:59:49 2008 +0200
+commit 229ce3abb6d6d4598de8ef1ed1e2da8163a9bbc0
+Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+Date: Wed May 14 14:16:50 2008 +0900
- b43legacy: fix DMA mapping leakage
+ wireless: Create 'device' symlink in sysfs
- This fixes a DMA mapping leakage in the case where we reject a DMA buffer
- because of its address.
- The patch by Michael Buesch has been ported to b43legacy.
+ Some network interfaces of the wireless drivers lack the 'device'
+ symlink in sysfs.
+ This patch lets the drivers create the links.
- Signed-off-by: Stefano Brivio <stefano.brivio at polimi.it>
- Cc: Christian Casteyde <casteyde.christian at free.fr>
+ Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+ Acked-by: Dan Williams <dcbw at redhat.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit b3fc9c6c58c986f7a24fd8b0794d1e0794935a28
-Author: Johannes Berg <johannes at sipsolutions.net>
-Date: Sun Apr 13 10:12:47 2008 +0200
+commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a
+Author: Roel Kluin <roel.kluin at gmail.com>
+Date: Tue May 13 22:12:27 2008 +0200
- mac80211: remove message on receiving unexpected unencrypted frames
-
- Some people are getting this message a lot, and we have traced it to
- broken access points that much too often send completely empty frames
- (all bytes zeroed, which they shouldn't do at all.)
+ wireless, airo: waitbusy() won't delay
- Since we cannot do anything about such frames in any case except the
- special case where we're debugging an AP, just remove the message.
+ There will be no delay even when COMMAND_BUSY (defined 0x8000) is set:
+ 0x8000 & (delay < 10000) will evaluate to 0 - when delay is 0.
- Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: Roel Kluin <roel.kluin at gmail.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 2dd0f69222c481574baf6a4affb9256a7c7410e7
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date: Sat Apr 12 19:25:00 2008 +0200
+commit 02969d296e91626d9942ea15f8a95fe056025ef1
+Author: Brian Cavagnolo <brian at cozybit.com>
+Date: Tue May 13 13:54:59 2008 +0100
- Update rt2x00 MAINTAINERS entry
+ libertas: fix command timeout after firmware failure
- Add the tree entry for rt2x00 to inform people about the
- rt2x00.git tree.
+ This is a fix for OLPC ticket #6586: "SCAN command fails, timer doesn't
+ fire". In fact, the timer was firing; the problem was that the dnld_sent
+ state variable was not being updated after the timer expired, so
+ lbs_execute_next_command was not being called.
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: Brian Cavagnolo <brian at cozybit.com>
+ Signed-off-by: Javier Cardona <javier at cozybit.com>
+ Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit e089764596ccde1037f2849fcee002c68986e67c
+commit 2f561feb386d6adefbad63c59a1fcd298ac6a79c
Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date: Sat Apr 12 19:23:55 2008 +0200
-
- Add rfkill to MAINTAINERS file
-
- I have been acting as the maintainer since the rfkill introduction,
- so lets make it official by adding a rfkill entry in the MAINTAINERS file.
-
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
+Date: Sat May 10 13:40:49 2008 +0200
-commit 89796f64a20d31e74ee0051df2e26812c852e734
-Author: Carlos Corbacho <carlos at strangeworlds.co.uk>
-Date: Sat Apr 12 16:39:47 2008 +0100
-
- rfkill: Fix device type check when toggling states
-
- rfkill_switch_all() is supposed to only switch all the interfaces of a
- given type, but does not actually do this; instead, it just switches
- everything currently in the same state.
+ mac80211: Add RTNL version of ieee80211_iterate_active_interfaces
- Add the necessary type check in.
+ Since commit e38bad4766a110b61fa6038f10be16ced8c6cc38
+ mac80211: make ieee80211_iterate_active_interfaces not need rtnl
+ rt2500usb and rt73usb broke down due to attempting register access
+ in atomic context (which is not possible for USB hardware).
- (This fixes a bug I've been seeing while developing an rfkill laptop
- driver, with both bluetooth and wireless simultaneously changing state
- after only pressing either KEY_WLAN or KEY_BLUETOOTH).
+ This patch restores ieee80211_iterate_active_interfaces() to use RTNL lock,
+ and provides the non-RTNL version under a new name:
+ ieee80211_iterate_active_interfaces_atomic()
- Signed-off-by: Carlos Corbacho <carlos at strangeworlds.co.uk>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit cdbbe3d1f53086ece706674d3bf4f6d148083694
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Fri Apr 11 12:16:36 2008 +0200
-
- b43legacy: Fix usage of struct device used for DMAing
+ So far only rt2x00 uses ieee80211_iterate_active_interfaces(), and those
+ drivers require the RTNL version of ieee80211_iterate_active_interfaces().
+ Since they already call that function directly, this patch will automatically
+ fix the USB rt2x00 drivers.
- This fixes b43legacy for the SSB DMA API change.
+ v2: Rename ieee80211_iterate_active_interfaces_rtnl
- Signed-off-by: Michael Buesch <mb at bu3sch.de>
- Cc: Stefano Brivio <stefano.brivio at polimi.it>
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Acked-by: Johannes Berg <johannes at sipsolutions.net>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 4ac58469f13028e1eb97f8bc7b0fca5072591d8d
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Fri Apr 11 11:59:00 2008 +0200
+commit 34a961f7db36f10abd6b153411fe8c810f21f6b3
+Author: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
+Date: Fri May 9 09:35:41 2008 -0700
- ssb: Fix usage of struct device used for DMAing
-
- This fixes DMA on architectures where DMA is nontrivial, like PPC64.
- We must use the host-device's (PCI) struct device for any DMA
- operation instead of the SSB device. For this we add a new
- struct device pointer to the SSB device structure that will always
- point to the right device for DMAing.
+ mac80211 : Association with 11n hidden ssid ap.
- Without this patch b43 and b44 drivers won't work on complex-DMA
- architectures, that for example need dev->archdata for DMA operations.
-
- Signed-off-by: Michael Buesch <mb at bu3sch.de>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 2d4543fdb487b1301ae48703dea3e66ead2d3c75
-Author: Reinette Chatre <reinette.chatre at intel.com>
-Date: Thu Apr 10 13:16:27 2008 -0700
-
- MAINTAINERS: move to generic repository for iwlwifi
+ This patch fixes the association problem with 11n hidden ssid ap.
+ Patch fixes the problem of associating with hidden ssid when
+ all three parameters ap,essid and channel are given to iwconfig.
+ This patch removes the condition of checking three parameters
+ and always checks for bss in bss list while associating.
- Signed-off-by: Reinette Chatre <reinette.chatre at intel.com>
+ Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 385f848a986b4677bc91e5f5f9033449a876819d
-Author: Stefano Brivio <stefano.brivio at polimi.it>
-Date: Sun Apr 6 17:10:53 2008 +0200
+commit 23f40dc650c0344b37fe54143868a31be66db882
+Author: Mathieu Chouquet-Stringer <mchouque at free.fr>
+Date: Wed May 14 19:03:18 2008 -0400
- b43legacy: fix initvals loading on bcm4303
+ hostap: fix "registers" registration in procfs
- This allows for the correct initial values to be uploaded to bcm4303
- devices. It should be correct, but I can't reliably test this as I suspect
- there's something going wrong with an hardware rfkill switch on my laptop.
- Please test.
+ The "registers" entry was incorrectly created in the procfs root instead
+ of the device specific directory. Move "registers" registration
+ immediately after the containing procfs directory is created.
- Signed-off-by: Stefano Brivio <stefano.brivio at polimi.it>
+ Signed-off-by: Mathieu Chouquet-Stringer <mchouque at free.fr>
+ Signed-off-by: Pavel Roskin <proski at gnu.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit aa979a6acbb468b0ebe8cf36dc782a5b3cc1e28d
-Author: Herton Ronaldo Krzesinski <herton at mandriva.com.br>
[...249537 lines suppressed...]
+
- /**************************************************
- * Code for hostmode operation.
- **************************************************/
-@@ -66,6 +79,7 @@ int pcibios_plat_dev_init(struct pci_dev
- base = &ssb_pcicore_pcibus_iobase;
- else
- base = &ssb_pcicore_pcibus_membase;
-+ res->flags |= IORESOURCE_PCI_FIXED;
- if (res->end) {
- size = res->end - res->start + 1;
- if (*base & (size - 1))
-@@ -88,20 +102,28 @@ int pcibios_plat_dev_init(struct pci_dev
-
- static void __init ssb_fixup_pcibridge(struct pci_dev *dev)
- {
-+ u8 lat;
++/* Common sprom device-attribute store-handler */
++ssize_t ssb_attr_sprom_store(struct ssb_bus *bus,
++ const char *buf, size_t count,
++ int (*sprom_check_crc)(const u16 *sprom, size_t size),
++ int (*sprom_write)(struct ssb_bus *bus, const u16 *sprom))
++{
++ u16 *sprom;
++ int res = 0, err = -ENOMEM;
++ size_t sprom_size_words = bus->sprom_size;
+
- if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) != 0)
- return;
-
-- ssb_printk(KERN_INFO "PCI: fixing up bridge\n");
-+ ssb_printk(KERN_INFO "PCI: Fixing up bridge %s\n", pci_name(dev));
-
- /* Enable PCI bridge bus mastering and memory space */
- pci_set_master(dev);
-- pcibios_enable_device(dev, ~0);
-+ if (pcibios_enable_device(dev, ~0) < 0) {
-+ ssb_printk(KERN_ERR "PCI: SSB bridge enable failed\n");
-+ return;
++ sprom = kcalloc(bus->sprom_size, sizeof(u16), GFP_KERNEL);
++ if (!sprom)
++ goto out;
++ err = hex2sprom(sprom, buf, count, sprom_size_words);
++ if (err) {
++ err = -EINVAL;
++ goto out_kfree;
++ }
++ err = sprom_check_crc(sprom, sprom_size_words);
++ if (err) {
++ err = -EINVAL;
++ goto out_kfree;
+ }
-
- /* Enable PCI bridge BAR1 prefetch and burst */
- pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);
-
- /* Make sure our latency is high enough to handle the devices behind us */
-- pci_write_config_byte(dev, PCI_LATENCY_TIMER, 0xa8);
-+ lat = 168;
-+ ssb_printk(KERN_INFO "PCI: Fixing latency timer of device %s to %u\n",
-+ pci_name(dev), lat);
-+ pci_write_config_byte(dev, PCI_LATENCY_TIMER, lat);
- }
- DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, ssb_fixup_pcibridge);
-
-@@ -117,8 +139,10 @@ static u32 get_cfgspace_addr(struct ssb_
- u32 addr = 0;
- u32 tmp;
-
-- if (unlikely(pc->cardbusmode && dev > 1))
-+ /* We do only have one cardbus device behind the bridge. */
-+ if (pc->cardbusmode && (dev >= 1))
- goto out;
+
- if (bus == 0) {
- /* Type 0 transaction */
- if (unlikely(dev >= SSB_PCI_SLOT_MAX))
-@@ -279,14 +303,14 @@ static struct resource ssb_pcicore_mem_r
- .name = "SSB PCIcore external memory",
- .start = SSB_PCI_DMA,
- .end = SSB_PCI_DMA + SSB_PCI_DMA_SZ - 1,
-- .flags = IORESOURCE_MEM,
-+ .flags = IORESOURCE_MEM | IORESOURCE_PCI_FIXED,
- };
-
- static struct resource ssb_pcicore_io_resource = {
- .name = "SSB PCIcore external I/O",
- .start = 0x100,
- .end = 0x7FF,
-- .flags = IORESOURCE_IO,
-+ .flags = IORESOURCE_IO | IORESOURCE_PCI_FIXED,
- };
-
- static struct pci_controller ssb_pcicore_controller = {
-@@ -318,7 +342,16 @@ static void ssb_pcicore_init_hostmode(st
- pcicore_write32(pc, SSB_PCICORE_ARBCTL, val);
- udelay(1); /* Assertion time demanded by the PCI standard */
-
-- /*TODO cardbus mode */
-+ if (pc->dev->bus->has_cardbus_slot) {
-+ ssb_dprintk(KERN_INFO PFX "CardBus slot detected\n");
-+ pc->cardbusmode = 1;
-+ /* GPIO 1 resets the bridge */
-+ ssb_gpio_out(pc->dev->bus, 1, 1);
-+ ssb_gpio_outen(pc->dev->bus, 1, 1);
-+ pcicore_write16(pc, SSB_PCICORE_SPROM(0),
-+ pcicore_read16(pc, SSB_PCICORE_SPROM(0))
-+ | 0x0400);
-+ }
-
- /* 64MB I/O window */
- pcicore_write32(pc, SSB_PCICORE_SBTOPCI0,
-@@ -344,7 +377,8 @@ static void ssb_pcicore_init_hostmode(st
- /* Ok, ready to run, register it to the system.
- * The following needs change, if we want to port hostmode
- * to non-MIPS platform. */
-- set_io_port_base((unsigned long)ioremap_nocache(SSB_PCI_MEM, 0x04000000));
-+ ssb_pcicore_controller.io_map_base = (unsigned long)ioremap_nocache(SSB_PCI_MEM, 0x04000000);
-+ set_io_port_base(ssb_pcicore_controller.io_map_base);
- /* Give some time to the PCI controller to configure itself with the new
- * values. Not waiting at this point causes crashes of the machine. */
- mdelay(10);
-@@ -517,7 +551,7 @@ int ssb_pcicore_dev_irqvecs_enable(struc
- } else {
- tmp = ssb_read32(dev, SSB_TPSFLAG);
- tmp &= SSB_TPSFLAG_BPFLAG;
-- intvec |= tmp;
-+ intvec |= (1 << tmp);
- }
- ssb_write32(pdev, SSB_INTVEC, intvec);
- }
-diff -up linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt.orig linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt
---- linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt.orig 2008-04-15 16:47:26.000000000 -0400
-+++ linux-2.6.24.noarch/Documentation/feature-removal-schedule.txt 2008-04-15 16:47:31.000000000 -0400
-@@ -332,4 +332,36 @@ Why: This driver has been marked obsolet
- 2.4 or later kernels, provides richer features and is more robust.
- Who: Stephen Hemminger <shemminger at linux-foundation.org>
-
-+What: bcm43xx wireless network driver
-+When: 2.6.26
-+Files: drivers/net/wireless/bcm43xx
-+Why: This driver's functionality has been replaced by the
-+ mac80211-based b43 and b43legacy drivers.
-+Who: John W. Linville <linville at tuxdriver.com>
-+
-+---------------------------
-+
-+What: ieee80211 softmac wireless networking component
-+When: 2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
-+Files: net/ieee80211/softmac
-+Why: No in-kernel drivers will depend on it any longer.
-+Who: John W. Linville <linville at tuxdriver.com>
-+
- ---------------------------
-+
-+What: rc80211-simple rate control algorithm for mac80211
-+When: 2.6.26
-+Files: net/mac80211/rc80211-simple.c
-+Why: This algorithm was provided for reference but always exhibited bad
-+ responsiveness and performance and has some serious flaws. It has been
-+ replaced by rc80211-pid.
-+Who: Stefano Brivio <stefano.brivio at polimi.it>
-+
-+---------------------------
-+
-+What: b43 support for firmware revision < 410
-+When: July 2008
-+Why: The support code for the old firmware hurts code readability/maintainability
-+ and slightly hurts runtime performance. Bugfixes for the old firmware
-+ are not provided by Broadcom anymore.
-+Who: Michael Buesch <mb at bu3sch.de>
++ /* Use interruptible locking, as the SPROM write might
++ * be holding the lock for several seconds. So allow userspace
++ * to cancel operation. */
++ err = -ERESTARTSYS;
++ if (mutex_lock_interruptible(&bus->sprom_mutex))
++ goto out_kfree;
++ err = ssb_devices_freeze(bus);
++ if (err == -EOPNOTSUPP) {
++ ssb_printk(KERN_ERR PFX "SPROM write: Could not freeze devices. "
++ "No suspend support. Is CONFIG_PM enabled?\n");
++ goto out_unlock;
++ }
++ if (err) {
++ ssb_printk(KERN_ERR PFX "SPROM write: Could not freeze all devices\n");
++ goto out_unlock;
++ }
++ res = sprom_write(bus, sprom);
++ err = ssb_devices_thaw(bus);
++ if (err)
++ ssb_printk(KERN_ERR PFX "SPROM write: Could not thaw all devices\n");
++out_unlock:
++ mutex_unlock(&bus->sprom_mutex);
++out_kfree:
++ kfree(sprom);
++out:
++ if (res)
++ return res;
++ return err ? err : count;
++}
--- linux-2.6-acpi-disable-stray-interrupt-1.patch DELETED ---
--- linux-2.6-acpi-disable-stray-interrupt-2.patch DELETED ---
--- linux-2.6-acpi-video-backlight-rationalize.patch DELETED ---
--- linux-2.6-acpi_ec_early_init_fix.patch DELETED ---
--- linux-2.6-ath5k-use-soft-wep.patch DELETED ---
--- linux-2.6-bcm43xx-pci-neuter.patch DELETED ---
--- linux-2.6-cfg80211-extras.patch DELETED ---
--- linux-2.6-ps3_gelic_wireless.patch DELETED ---
--- linux-2.6-rndis_host-fixes.patch DELETED ---
--- linux-2.6-rndis_wlan.patch DELETED ---
--- linux-2.6-wireless-pending-fixups.patch DELETED ---
--- linux-2.6-wireless-pending-too.patch DELETED ---
--- linux-2.6-zd1211rw-module-alias.patch DELETED ---
More information about the fedora-extras-commits
mailing list