* [PATCH] ipv4/fib_frontend.c: (Re)export ip_dev_find for 2.6.14
From: Hal Rosenstock @ 2005-10-04 15:01 UTC (permalink / raw)
To: netdev; +Cc: openib-general
ipv4/fib_frontend.c: (Re)export ip_dev_find for 2.6.14
(There is emerging functionality (not yet pushed upstream) in the IB
subsystem which relies on this being available. ip_dev_find is used to
find a valid IPoIB device when the outgoing device returned by the route
lookup (ip_route_output_key) is using the loopback interface. A valid
IPoIB device is needed to perform sending an ARP and doing an IB path
lookup so that an IB connection can be made).
Signed-off-by: Hal Rosenstock <halr@voltaire.com>
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -661,4 +661,5 @@ void __init ip_fib_init(void)
}
EXPORT_SYMBOL(inet_addr_type);
+EXPORT_SYMBOL(ip_dev_find);
EXPORT_SYMBOL(ip_rt_ioctl);
^ permalink raw reply
* Re: patch tulip-natsemi-dp83840a-phy-fix.patch added to -mm tree
From: Jeff Garzik @ 2005-10-04 13:18 UTC (permalink / raw)
To: Francois Romieu
Cc: Grant Grundler, akpm, T-Bone, varenet, Linux Kernel, Netdev
In-Reply-To: <20050527071736.GA17185@electric-eye.fr.zoreil.com>
Francois Romieu wrote:
> Jeff Garzik <jgarzik@pobox.com> :
> [...]
>
>>Looks pretty good to me, at first look.
>>
>>I'll give it some thought, and probably apply it, in a few days.
>
>
> An updated version is cooking.
Ever finish cooking this tulip patch?
Jeff
^ permalink raw reply
* Re: [patch 2.6.14-rc2] bonding: replicate IGMP traffic in activebackup mode
From: Jeff Garzik @ 2005-10-04 11:58 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-kernel, netdev, bonding-devel, ctindel, fubar
In-Reply-To: <09282005175053.11150@bilbo.tuxdriver.com>
John W. Linville wrote:
> Replicate IGMP frames across all slaves in activebackup mode. This
> ensures fail-over is rapid for multicast traffic as well. Otherwise,
> multicast traffic will be lost until the next IGMP membership report
> poll timeout.
>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
> ---
> This is conceptually similar to the treatment of IGMP traffic in
> bond_alb_xmit. In that case, IGMP traffic transmitted on any slave
> is re-routed to the active slave in order to ensure that multicast
> traffic continues to be directed to the active receiver.
>
> drivers/net/bonding/bond_main.c | 53 ++++++++++++++++++++++++++++++++++++++--
> 1 files changed, 51 insertions(+), 2 deletions(-)
Applied. For future patches, please
* don't include description following the signed-off-by line
* if you are willing to special-case me, I actually don't like seeing a
diffstat; I have to manually remove it before applying
^ permalink raw reply
* Re: [patch 2.6.14-rc2 2/2] s2io: add MODULE_VERSION to s2io driver
From: Jeff Garzik @ 2005-10-04 11:51 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-kernel, netdev, leonid.grossman
In-Reply-To: <09282005175052.10818@bilbo.tuxdriver.com>
applied patches 1-2
^ permalink raw reply
* Re: [patch] airo: fix resume
From: Jeff Garzik @ 2005-10-04 11:46 UTC (permalink / raw)
To: Michal Schmidt; +Cc: Benjamin Reed, netdev
In-Reply-To: <434119B2.2070105@stud.feec.vutbr.cz>
applied. please CC future patches to netdev@vger.kernel.org, not
netdev@oss.sgi.com.
^ permalink raw reply
* [git patches] (updated) net driver updates
From: Jeff Garzik @ 2005-10-04 9:52 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: Netdev list
Andrew and Linus,
I pushed three more csets to the 'upstream-fixes' branch of
master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
This fixes some of the fixes :)
Changelog of added csets follows:
commit 832f8f0378ff1566f2a222352c7ad5df3f8d0d9d
Author: Randy Dunlap <rdunlap@xenotime.net>
Date: Tue Oct 4 00:41:22 2005 -0700
[PATCH] sungem: fix gfp flags type
Fix nocast sparse warnings in sungen:
drivers/net/sungem.h:1040:45: warning: implicit cast to nocast type
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
commit 81c58732277654a51bb52832e1bc74234bb977bc
Author: Randy Dunlap <rdunlap@xenotime.net>
Date: Mon Oct 3 21:24:36 2005 -0700
[PATCH] ns83820: fix gfp flags type
Fix implicit nocast warnings in ns83820 code, including __nocast:
drivers/net/ns83820.c:603:46: warning: implicit cast to nocast type
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
commit f36a29d5672c7698ffe55c7c05107ae77fa698cc
Author: Randy Dunlap <rdunlap@xenotime.net>
Date: Mon Oct 3 21:24:45 2005 -0700
[PATCH] ieee80211: fix gfp flags type
Fix implicit nocast warnings in ieee80211 code, including __nocast:
net/ieee80211/ieee80211_tx.c:215:9: warning: implicit cast to
nocast type
Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
^ permalink raw reply
* Giai Phap Marketting bang cach gui email cho khach hang
From: Dich Vu Email @ 2005-10-04 3:47 UTC (permalink / raw)
To: netdev
[-- Attachment #1: Type: text/plain, Size: 455 bytes --]
Chao Quy vi.
Hien tai Toi dang co danh sach hon 200.000 dia chi email danh cho quy vi can quang ba san pham, thuong hieu. Bao gom cac dia chi email
@hn.vnn.vn
@fpt.vn
@netnam.vn
@ten_cong_ty.com.vn
....
Va rat nhieu cac domain khac.
Ty le email chinh xac la 98%.
Khuyen mai them chuong trinh gui email rat manh
Gia 1.500.000/1 danh sach.
Hoac 300.000/1lan gui email.
Lien lac qua dia chi email: dich.vu.email@gmail.com hoac YM: dich_vu_email
^ permalink raw reply
* Giai Phap Marketting bang cach gui email cho khach hang
From: Dich Vu Email @ 2005-10-04 3:47 UTC (permalink / raw)
To: netdev
[-- Attachment #1: Type: text/plain, Size: 455 bytes --]
Chao Quy vi.
Hien tai Toi dang co danh sach hon 200.000 dia chi email danh cho quy vi can quang ba san pham, thuong hieu. Bao gom cac dia chi email
@hn.vnn.vn
@fpt.vn
@netnam.vn
@ten_cong_ty.com.vn
....
Va rat nhieu cac domain khac.
Ty le email chinh xac la 98%.
Khuyen mai them chuong trinh gui email rat manh
Gia 1.500.000/1 danh sach.
Hoac 300.000/1lan gui email.
Lien lac qua dia chi email: dich.vu.email@gmail.com hoac YM: dich_vu_email
^ permalink raw reply
* [git patches] 2.6.x net driver fixes
From: Jeff Garzik @ 2005-10-04 3:05 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: netdev, linux-kernel
Please pull from 'upstream-fixes' branch of
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
to obtain the following fixes:
drivers/net/Kconfig | 8 -
drivers/net/bonding/bond_main.c | 280 ++++++++---------------------------
drivers/net/bonding/bonding.h | 4
drivers/net/ibm_emac/ibm_emac_core.c | 31 +++
drivers/net/ns83820.c | 2
drivers/net/pcmcia/smc91c92_cs.c | 2
drivers/net/skge.c | 24 ++-
drivers/net/starfire.c | 46 +++--
drivers/net/tulip/21142.c | 2
drivers/s390/net/qeth.h | 2
drivers/s390/net/qeth_main.c | 37 ++--
net/ieee80211/ieee80211_tx.c | 2
12 files changed, 169 insertions(+), 271 deletions(-)
Grant Coady:
net/Kconfig: convert pocket_adapter ISA to PARPORT
Ion Badulescu:
[netdrvr starfire] fix highmem and broken firmware issues
Jay Vosburgh:
fix bonding crash, remove old ABI support
Komuro:
[netdrvr] fix smc91c92_cs multicast bug
Philippe De Muyter:
tulip DC21143 rev 48 10Mbit HDX fix
Randy Dunlap:
ns83820: fix gfp flags type
ieee80211: fix gfp flags type
Stephen Hemminger:
skge: set mac address oops with bonding
Ursula Braun:
s390: qeth driver fixes
Wade Farnsworth:
emac: add support for platform-specific unsupported PHY features
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1655,7 +1655,7 @@ config LAN_SAA9730
config NET_POCKET
bool "Pocket and portable adapters"
- depends on NET_ETHERNET && ISA
+ depends on NET_ETHERNET && PARPORT
---help---
Cute little network (Ethernet) devices which attach to the parallel
port ("pocket adapters"), commonly used with laptops. If you have
@@ -1679,7 +1679,7 @@ config NET_POCKET
config ATP
tristate "AT-LAN-TEC/RealTek pocket adapter support"
- depends on NET_POCKET && ISA && X86
+ depends on NET_POCKET && PARPORT && X86
select CRC32
---help---
This is a network (Ethernet) device which attaches to your parallel
@@ -1694,7 +1694,7 @@ config ATP
config DE600
tristate "D-Link DE600 pocket adapter support"
- depends on NET_POCKET && ISA
+ depends on NET_POCKET && PARPORT
---help---
This is a network (Ethernet) device which attaches to your parallel
port. Read <file:Documentation/networking/DLINK.txt> as well as the
@@ -1709,7 +1709,7 @@ config DE600
config DE620
tristate "D-Link DE620 pocket adapter support"
- depends on NET_POCKET && ISA
+ depends on NET_POCKET && PARPORT
---help---
This is a network (Ethernet) device which attaches to your parallel
port. Read <file:Documentation/networking/DLINK.txt> as well as the
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -487,6 +487,8 @@
* * Added xmit_hash_policy_layer34()
* - Modified by Jay Vosburgh <fubar@us.ibm.com> to also support mode 4.
* Set version to 2.6.3.
+ * 2005/09/26 - Jay Vosburgh <fubar@us.ibm.com>
+ * - Removed backwards compatibility for old ifenslaves. Version 2.6.4.
*/
//#define BONDING_DEBUG 1
@@ -595,14 +597,7 @@ static int arp_ip_count = 0;
static int bond_mode = BOND_MODE_ROUNDROBIN;
static int xmit_hashtype= BOND_XMIT_POLICY_LAYER2;
static int lacp_fast = 0;
-static int app_abi_ver = 0;
-static int orig_app_abi_ver = -1; /* This is used to save the first ABI version
- * we receive from the application. Once set,
- * it won't be changed, and the module will
- * refuse to enslave/release interfaces if the
- * command comes from an application using
- * another ABI version.
- */
+
struct bond_parm_tbl {
char *modename;
int mode;
@@ -1702,51 +1697,29 @@ static int bond_enslave(struct net_devic
}
}
- if (app_abi_ver >= 1) {
- /* The application is using an ABI, which requires the
- * slave interface to be closed.
- */
- if ((slave_dev->flags & IFF_UP)) {
- printk(KERN_ERR DRV_NAME
- ": Error: %s is up\n",
- slave_dev->name);
- res = -EPERM;
- goto err_undo_flags;
- }
-
- if (slave_dev->set_mac_address == NULL) {
- printk(KERN_ERR DRV_NAME
- ": Error: The slave device you specified does "
- "not support setting the MAC address.\n");
- printk(KERN_ERR
- "Your kernel likely does not support slave "
- "devices.\n");
+ /*
+ * Old ifenslave binaries are no longer supported. These can
+ * be identified with moderate accurary by the state of the slave:
+ * the current ifenslave will set the interface down prior to
+ * enslaving it; the old ifenslave will not.
+ */
+ if ((slave_dev->flags & IFF_UP)) {
+ printk(KERN_ERR DRV_NAME ": %s is up. "
+ "This may be due to an out of date ifenslave.\n",
+ slave_dev->name);
+ res = -EPERM;
+ goto err_undo_flags;
+ }
- res = -EOPNOTSUPP;
- goto err_undo_flags;
- }
- } else {
- /* The application is not using an ABI, which requires the
- * slave interface to be open.
- */
- if (!(slave_dev->flags & IFF_UP)) {
- printk(KERN_ERR DRV_NAME
- ": Error: %s is not running\n",
- slave_dev->name);
- res = -EINVAL;
- goto err_undo_flags;
- }
+ if (slave_dev->set_mac_address == NULL) {
+ printk(KERN_ERR DRV_NAME
+ ": Error: The slave device you specified does "
+ "not support setting the MAC address.\n");
+ printk(KERN_ERR
+ "Your kernel likely does not support slave devices.\n");
- if ((bond->params.mode == BOND_MODE_8023AD) ||
- (bond->params.mode == BOND_MODE_TLB) ||
- (bond->params.mode == BOND_MODE_ALB)) {
- printk(KERN_ERR DRV_NAME
- ": Error: to use %s mode, you must upgrade "
- "ifenslave.\n",
- bond_mode_name(bond->params.mode));
- res = -EOPNOTSUPP;
- goto err_undo_flags;
- }
+ res = -EOPNOTSUPP;
+ goto err_undo_flags;
}
new_slave = kmalloc(sizeof(struct slave), GFP_KERNEL);
@@ -1762,41 +1735,36 @@ static int bond_enslave(struct net_devic
*/
new_slave->original_flags = slave_dev->flags;
- if (app_abi_ver >= 1) {
- /* save slave's original ("permanent") mac address for
- * modes that needs it, and for restoring it upon release,
- * and then set it to the master's address
- */
- memcpy(new_slave->perm_hwaddr, slave_dev->dev_addr, ETH_ALEN);
+ /*
+ * Save slave's original ("permanent") mac address for modes
+ * that need it, and for restoring it upon release, and then
+ * set it to the master's address
+ */
+ memcpy(new_slave->perm_hwaddr, slave_dev->dev_addr, ETH_ALEN);
- /* set slave to master's mac address
- * The application already set the master's
- * mac address to that of the first slave
- */
- memcpy(addr.sa_data, bond_dev->dev_addr, bond_dev->addr_len);
- addr.sa_family = slave_dev->type;
- res = dev_set_mac_address(slave_dev, &addr);
- if (res) {
- dprintk("Error %d calling set_mac_address\n", res);
- goto err_free;
- }
+ /*
+ * Set slave to master's mac address. The application already
+ * set the master's mac address to that of the first slave
+ */
+ memcpy(addr.sa_data, bond_dev->dev_addr, bond_dev->addr_len);
+ addr.sa_family = slave_dev->type;
+ res = dev_set_mac_address(slave_dev, &addr);
+ if (res) {
+ dprintk("Error %d calling set_mac_address\n", res);
+ goto err_free;
+ }
- /* open the slave since the application closed it */
- res = dev_open(slave_dev);
- if (res) {
- dprintk("Openning slave %s failed\n", slave_dev->name);
- goto err_restore_mac;
- }
+ /* open the slave since the application closed it */
+ res = dev_open(slave_dev);
+ if (res) {
+ dprintk("Openning slave %s failed\n", slave_dev->name);
+ goto err_restore_mac;
}
res = netdev_set_master(slave_dev, bond_dev);
if (res) {
dprintk("Error %d calling netdev_set_master\n", res);
- if (app_abi_ver < 1) {
- goto err_free;
- } else {
- goto err_close;
- }
+ goto err_close;
}
new_slave->dev = slave_dev;
@@ -1997,39 +1965,6 @@ static int bond_enslave(struct net_devic
write_unlock_bh(&bond->lock);
- if (app_abi_ver < 1) {
- /*
- * !!! This is to support old versions of ifenslave.
- * We can remove this in 2.5 because our ifenslave takes
- * care of this for us.
- * We check to see if the master has a mac address yet.
- * If not, we'll give it the mac address of our slave device.
- */
- int ndx = 0;
-
- for (ndx = 0; ndx < bond_dev->addr_len; ndx++) {
- dprintk("Checking ndx=%d of bond_dev->dev_addr\n",
- ndx);
- if (bond_dev->dev_addr[ndx] != 0) {
- dprintk("Found non-zero byte at ndx=%d\n",
- ndx);
- break;
- }
- }
-
- if (ndx == bond_dev->addr_len) {
- /*
- * We got all the way through the address and it was
- * all 0's.
- */
- dprintk("%s doesn't have a MAC address yet. \n",
- bond_dev->name);
- dprintk("Going to give assign it from %s.\n",
- slave_dev->name);
- bond_sethwaddr(bond_dev, slave_dev);
- }
- }
-
printk(KERN_INFO DRV_NAME
": %s: enslaving %s as a%s interface with a%s link.\n",
bond_dev->name, slave_dev->name,
@@ -2227,12 +2162,10 @@ static int bond_release(struct net_devic
/* close slave before restoring its mac address */
dev_close(slave_dev);
- if (app_abi_ver >= 1) {
- /* restore original ("permanent") mac address */
- memcpy(addr.sa_data, slave->perm_hwaddr, ETH_ALEN);
- addr.sa_family = slave_dev->type;
- dev_set_mac_address(slave_dev, &addr);
- }
+ /* restore original ("permanent") mac address */
+ memcpy(addr.sa_data, slave->perm_hwaddr, ETH_ALEN);
+ addr.sa_family = slave_dev->type;
+ dev_set_mac_address(slave_dev, &addr);
/* restore the original state of the
* IFF_NOARP flag that might have been
@@ -2320,12 +2253,10 @@ static int bond_release_all(struct net_d
/* close slave before restoring its mac address */
dev_close(slave_dev);
- if (app_abi_ver >= 1) {
- /* restore original ("permanent") mac address*/
- memcpy(addr.sa_data, slave->perm_hwaddr, ETH_ALEN);
- addr.sa_family = slave_dev->type;
- dev_set_mac_address(slave_dev, &addr);
- }
+ /* restore original ("permanent") mac address*/
+ memcpy(addr.sa_data, slave->perm_hwaddr, ETH_ALEN);
+ addr.sa_family = slave_dev->type;
+ dev_set_mac_address(slave_dev, &addr);
/* restore the original state of the IFF_NOARP flag that might have
* been set by bond_set_slave_inactive_flags()
@@ -2423,57 +2354,6 @@ static int bond_ioctl_change_active(stru
return res;
}
-static int bond_ethtool_ioctl(struct net_device *bond_dev, struct ifreq *ifr)
-{
- struct ethtool_drvinfo info;
- void __user *addr = ifr->ifr_data;
- uint32_t cmd;
-
- if (get_user(cmd, (uint32_t __user *)addr)) {
- return -EFAULT;
- }
-
- switch (cmd) {
- case ETHTOOL_GDRVINFO:
- if (copy_from_user(&info, addr, sizeof(info))) {
- return -EFAULT;
- }
-
- if (strcmp(info.driver, "ifenslave") == 0) {
- int new_abi_ver;
- char *endptr;
-
- new_abi_ver = simple_strtoul(info.fw_version,
- &endptr, 0);
- if (*endptr) {
- printk(KERN_ERR DRV_NAME
- ": Error: got invalid ABI "
- "version from application\n");
-
- return -EINVAL;
- }
-
- if (orig_app_abi_ver == -1) {
- orig_app_abi_ver = new_abi_ver;
- }
-
- app_abi_ver = new_abi_ver;
- }
-
- strncpy(info.driver, DRV_NAME, 32);
- strncpy(info.version, DRV_VERSION, 32);
- snprintf(info.fw_version, 32, "%d", BOND_ABI_VERSION);
-
- if (copy_to_user(addr, &info, sizeof(info))) {
- return -EFAULT;
- }
-
- return 0;
- default:
- return -EOPNOTSUPP;
- }
-}
-
static int bond_info_query(struct net_device *bond_dev, struct ifbond *info)
{
struct bonding *bond = bond_dev->priv;
@@ -3442,16 +3322,11 @@ static void bond_info_show_slave(struct
seq_printf(seq, "Link Failure Count: %d\n",
slave->link_failure_count);
- if (app_abi_ver >= 1) {
- seq_printf(seq,
- "Permanent HW addr: %02x:%02x:%02x:%02x:%02x:%02x\n",
- slave->perm_hwaddr[0],
- slave->perm_hwaddr[1],
- slave->perm_hwaddr[2],
- slave->perm_hwaddr[3],
- slave->perm_hwaddr[4],
- slave->perm_hwaddr[5]);
- }
+ seq_printf(seq,
+ "Permanent HW addr: %02x:%02x:%02x:%02x:%02x:%02x\n",
+ slave->perm_hwaddr[0], slave->perm_hwaddr[1],
+ slave->perm_hwaddr[2], slave->perm_hwaddr[3],
+ slave->perm_hwaddr[4], slave->perm_hwaddr[5]);
if (bond->params.mode == BOND_MODE_8023AD) {
const struct aggregator *agg
@@ -4010,15 +3885,12 @@ static int bond_do_ioctl(struct net_devi
struct ifslave k_sinfo;
struct ifslave __user *u_sinfo = NULL;
struct mii_ioctl_data *mii = NULL;
- int prev_abi_ver = orig_app_abi_ver;
int res = 0;
dprintk("bond_ioctl: master=%s, cmd=%d\n",
bond_dev->name, cmd);
switch (cmd) {
- case SIOCETHTOOL:
- return bond_ethtool_ioctl(bond_dev, ifr);
case SIOCGMIIPHY:
mii = if_mii(ifr);
if (!mii) {
@@ -4090,21 +3962,6 @@ static int bond_do_ioctl(struct net_devi
return -EPERM;
}
- if (orig_app_abi_ver == -1) {
- /* no orig_app_abi_ver was provided yet, so we'll use the
- * current one from now on, even if it's 0
- */
- orig_app_abi_ver = app_abi_ver;
-
- } else if (orig_app_abi_ver != app_abi_ver) {
- printk(KERN_ERR DRV_NAME
- ": Error: already using ifenslave ABI version %d; to "
- "upgrade ifenslave to version %d, you must first "
- "reload bonding.\n",
- orig_app_abi_ver, app_abi_ver);
- return -EINVAL;
- }
-
slave_dev = dev_get_by_name(ifr->ifr_slave);
dprintk("slave_dev=%p: \n", slave_dev);
@@ -4137,14 +3994,6 @@ static int bond_do_ioctl(struct net_devi
dev_put(slave_dev);
}
- if (res < 0) {
- /* The ioctl failed, so there's no point in changing the
- * orig_app_abi_ver. We'll restore it's value just in case
- * we've changed it earlier in this function.
- */
- orig_app_abi_ver = prev_abi_ver;
- }
-
return res;
}
@@ -4578,9 +4427,18 @@ static inline void bond_set_mode_ops(str
}
}
+static void bond_ethtool_get_drvinfo(struct net_device *bond_dev,
+ struct ethtool_drvinfo *drvinfo)
+{
+ strncpy(drvinfo->driver, DRV_NAME, 32);
+ strncpy(drvinfo->version, DRV_VERSION, 32);
+ snprintf(drvinfo->fw_version, 32, "%d", BOND_ABI_VERSION);
+}
+
static struct ethtool_ops bond_ethtool_ops = {
.get_tx_csum = ethtool_op_get_tx_csum,
.get_sg = ethtool_op_get_sg,
+ .get_drvinfo = bond_ethtool_get_drvinfo,
};
/*
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -40,8 +40,8 @@
#include "bond_3ad.h"
#include "bond_alb.h"
-#define DRV_VERSION "2.6.3"
-#define DRV_RELDATE "June 8, 2005"
+#define DRV_VERSION "2.6.4"
+#define DRV_RELDATE "September 26, 2005"
#define DRV_NAME "bonding"
#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver"
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c
--- a/drivers/net/ibm_emac/ibm_emac_core.c
+++ b/drivers/net/ibm_emac/ibm_emac_core.c
@@ -1875,6 +1875,9 @@ static int emac_init_device(struct ocp_d
rc = -ENODEV;
goto bail;
}
+
+ /* Disable any PHY features not supported by the platform */
+ ep->phy_mii.def->features &= ~emacdata->phy_feat_exc;
/* Setup initial PHY config & startup aneg */
if (ep->phy_mii.def->ops->init)
@@ -1882,6 +1885,34 @@ static int emac_init_device(struct ocp_d
netif_carrier_off(ndev);
if (ep->phy_mii.def->features & SUPPORTED_Autoneg)
ep->want_autoneg = 1;
+ else {
+ ep->want_autoneg = 0;
+
+ /* Select highest supported speed/duplex */
+ if (ep->phy_mii.def->features & SUPPORTED_1000baseT_Full) {
+ ep->phy_mii.speed = SPEED_1000;
+ ep->phy_mii.duplex = DUPLEX_FULL;
+ } else if (ep->phy_mii.def->features &
+ SUPPORTED_1000baseT_Half) {
+ ep->phy_mii.speed = SPEED_1000;
+ ep->phy_mii.duplex = DUPLEX_HALF;
+ } else if (ep->phy_mii.def->features &
+ SUPPORTED_100baseT_Full) {
+ ep->phy_mii.speed = SPEED_100;
+ ep->phy_mii.duplex = DUPLEX_FULL;
+ } else if (ep->phy_mii.def->features &
+ SUPPORTED_100baseT_Half) {
+ ep->phy_mii.speed = SPEED_100;
+ ep->phy_mii.duplex = DUPLEX_HALF;
+ } else if (ep->phy_mii.def->features &
+ SUPPORTED_10baseT_Full) {
+ ep->phy_mii.speed = SPEED_10;
+ ep->phy_mii.duplex = DUPLEX_FULL;
+ } else {
+ ep->phy_mii.speed = SPEED_10;
+ ep->phy_mii.duplex = DUPLEX_HALF;
+ }
+ }
emac_start_link(ep, NULL);
/* read the MAC Address */
diff --git a/drivers/net/ns83820.c b/drivers/net/ns83820.c
--- a/drivers/net/ns83820.c
+++ b/drivers/net/ns83820.c
@@ -584,7 +584,7 @@ static inline int ns83820_add_rx_skb(str
return 0;
}
-static inline int rx_refill(struct net_device *ndev, int gfp)
+static inline int rx_refill(struct net_device *ndev, unsigned int gfp)
{
struct ns83820 *dev = PRIV(ndev);
unsigned i;
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c
--- a/drivers/net/pcmcia/smc91c92_cs.c
+++ b/drivers/net/pcmcia/smc91c92_cs.c
@@ -1832,7 +1832,7 @@ static void fill_multicast_tbl(int count
{
struct dev_mc_list *mc_addr;
- for (mc_addr = addrs; mc_addr && --count > 0; mc_addr = mc_addr->next) {
+ for (mc_addr = addrs; mc_addr && count-- > 0; mc_addr = mc_addr->next) {
u_int position = ether_crc(6, mc_addr->dmi_addr);
#ifndef final_version /* Verify multicast address. */
if ((mc_addr->dmi_addr[0] & 1) == 0)
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2837,21 +2837,29 @@ static void skge_netpoll(struct net_devi
static int skge_set_mac_address(struct net_device *dev, void *p)
{
struct skge_port *skge = netdev_priv(dev);
- struct sockaddr *addr = p;
- int err = 0;
+ struct skge_hw *hw = skge->hw;
+ unsigned port = skge->port;
+ const struct sockaddr *addr = p;
if (!is_valid_ether_addr(addr->sa_data))
return -EADDRNOTAVAIL;
- skge_down(dev);
+ spin_lock_bh(&hw->phy_lock);
memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
- memcpy_toio(skge->hw->regs + B2_MAC_1 + skge->port*8,
+ memcpy_toio(hw->regs + B2_MAC_1 + port*8,
dev->dev_addr, ETH_ALEN);
- memcpy_toio(skge->hw->regs + B2_MAC_2 + skge->port*8,
+ memcpy_toio(hw->regs + B2_MAC_2 + port*8,
dev->dev_addr, ETH_ALEN);
- if (dev->flags & IFF_UP)
- err = skge_up(dev);
- return err;
+
+ if (hw->chip_id == CHIP_ID_GENESIS)
+ xm_outaddr(hw, port, XM_SA, dev->dev_addr);
+ else {
+ gma_set_addr(hw, port, GM_SRC_ADDR_1L, dev->dev_addr);
+ gma_set_addr(hw, port, GM_SRC_ADDR_2L, dev->dev_addr);
+ }
+ spin_unlock_bh(&hw->phy_lock);
+
+ return 0;
}
static const struct {
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c
--- a/drivers/net/starfire.c
+++ b/drivers/net/starfire.c
@@ -133,14 +133,18 @@
- finally added firmware (GPL'ed by Adaptec)
- removed compatibility code for 2.2.x
+ LK1.4.2.1 (Ion Badulescu)
+ - fixed 32/64 bit issues on i386 + CONFIG_HIGHMEM
+ - added 32-bit padding to outgoing skb's, removed previous workaround
+
TODO: - fix forced speed/duplexing code (broken a long time ago, when
somebody converted the driver to use the generic MII code)
- fix VLAN support
*/
#define DRV_NAME "starfire"
-#define DRV_VERSION "1.03+LK1.4.2"
-#define DRV_RELDATE "January 19, 2005"
+#define DRV_VERSION "1.03+LK1.4.2.1"
+#define DRV_RELDATE "October 3, 2005"
#include <linux/config.h>
#include <linux/version.h>
@@ -165,6 +169,14 @@ TODO: - fix forced speed/duplexing code
* of length 1. If and when this is fixed, the #define below can be removed.
*/
#define HAS_BROKEN_FIRMWARE
+
+/*
+ * If using the broken firmware, data must be padded to the next 32-bit boundary.
+ */
+#ifdef HAS_BROKEN_FIRMWARE
+#define PADDING_MASK 3
+#endif
+
/*
* Define this if using the driver with the zero-copy patch
*/
@@ -257,9 +269,10 @@ static int full_duplex[MAX_UNITS] = {0,
* This SUCKS.
* We need a much better method to determine if dma_addr_t is 64-bit.
*/
-#if (defined(__i386__) && defined(CONFIG_HIGHMEM) && (LINUX_VERSION_CODE > 0x20500 || defined(CONFIG_HIGHMEM64G))) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR))
+#if (defined(__i386__) && defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR))
/* 64-bit dma_addr_t */
#define ADDR_64BITS /* This chip uses 64 bit addresses. */
+#define netdrv_addr_t u64
#define cpu_to_dma(x) cpu_to_le64(x)
#define dma_to_cpu(x) le64_to_cpu(x)
#define RX_DESC_Q_ADDR_SIZE RxDescQAddr64bit
@@ -268,6 +281,7 @@ static int full_duplex[MAX_UNITS] = {0,
#define TX_COMPL_Q_ADDR_SIZE TxComplQAddr64bit
#define RX_DESC_ADDR_SIZE RxDescAddr64bit
#else /* 32-bit dma_addr_t */
+#define netdrv_addr_t u32
#define cpu_to_dma(x) cpu_to_le32(x)
#define dma_to_cpu(x) le32_to_cpu(x)
#define RX_DESC_Q_ADDR_SIZE RxDescQAddr32bit
@@ -1333,21 +1347,10 @@ static int start_tx(struct sk_buff *skb,
}
#if defined(ZEROCOPY) && defined(HAS_BROKEN_FIRMWARE)
- {
- int has_bad_length = 0;
-
- if (skb_first_frag_len(skb) == 1)
- has_bad_length = 1;
- else {
- for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
- if (skb_shinfo(skb)->frags[i].size == 1) {
- has_bad_length = 1;
- break;
- }
- }
-
- if (has_bad_length)
- skb_checksum_help(skb, 0);
+ if (skb->ip_summed == CHECKSUM_HW) {
+ skb = skb_padto(skb, (skb->len + PADDING_MASK) & ~PADDING_MASK);
+ if (skb == NULL)
+ return NETDEV_TX_OK;
}
#endif /* ZEROCOPY && HAS_BROKEN_FIRMWARE */
@@ -2127,13 +2130,12 @@ static int __init starfire_init (void)
#endif
#endif
-#ifndef ADDR_64BITS
/* we can do this test only at run-time... sigh */
- if (sizeof(dma_addr_t) == sizeof(u64)) {
- printk("This driver has not been ported to this 64-bit architecture yet\n");
+ if (sizeof(dma_addr_t) != sizeof(netdrv_addr_t)) {
+ printk("This driver has dma_addr_t issues, please send email to maintainer\n");
return -ENODEV;
}
-#endif /* not ADDR_64BITS */
+
return pci_module_init (&starfire_driver);
}
diff --git a/drivers/net/tulip/21142.c b/drivers/net/tulip/21142.c
--- a/drivers/net/tulip/21142.c
+++ b/drivers/net/tulip/21142.c
@@ -172,7 +172,7 @@ void t21142_lnk_change(struct net_device
int i;
for (i = 0; i < tp->mtable->leafcount; i++)
if (tp->mtable->mleaf[i].media == dev->if_port) {
- int startup = ! ((tp->chip_id == DC21143 && tp->revision == 65));
+ int startup = ! ((tp->chip_id == DC21143 && (tp->revision == 48 || tp->revision == 65)));
tp->cur_index = i;
tulip_select_media(dev, startup);
setup_done = 1;
diff --git a/drivers/s390/net/qeth.h b/drivers/s390/net/qeth.h
--- a/drivers/s390/net/qeth.h
+++ b/drivers/s390/net/qeth.h
@@ -686,6 +686,7 @@ struct qeth_seqno {
__u32 pdu_hdr;
__u32 pdu_hdr_ack;
__u16 ipa;
+ __u32 pkt_seqno;
};
struct qeth_reply {
@@ -848,6 +849,7 @@ qeth_realloc_headroom(struct qeth_card *
"on interface %s", QETH_CARD_IFNAME(card));
return -ENOMEM;
}
+ kfree_skb(*skb);
*skb = new_skb;
}
return 0;
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -511,7 +511,7 @@ static int
__qeth_set_offline(struct ccwgroup_device *cgdev, int recovery_mode)
{
struct qeth_card *card = (struct qeth_card *) cgdev->dev.driver_data;
- int rc = 0;
+ int rc = 0, rc2 = 0, rc3 = 0;
enum qeth_card_states recover_flag;
QETH_DBF_TEXT(setup, 3, "setoffl");
@@ -523,11 +523,13 @@ __qeth_set_offline(struct ccwgroup_devic
CARD_BUS_ID(card));
return -ERESTARTSYS;
}
- if ((rc = ccw_device_set_offline(CARD_DDEV(card))) ||
- (rc = ccw_device_set_offline(CARD_WDEV(card))) ||
- (rc = ccw_device_set_offline(CARD_RDEV(card)))) {
+ rc = ccw_device_set_offline(CARD_DDEV(card));
+ rc2 = ccw_device_set_offline(CARD_WDEV(card));
+ rc3 = ccw_device_set_offline(CARD_RDEV(card));
+ if (!rc)
+ rc = (rc2) ? rc2 : rc3;
+ if (rc)
QETH_DBF_TEXT_(setup, 2, "1err%d", rc);
- }
if (recover_flag == CARD_STATE_UP)
card->state = CARD_STATE_RECOVER;
qeth_notify_processes();
@@ -1046,6 +1048,7 @@ qeth_setup_card(struct qeth_card *card)
spin_lock_init(&card->vlanlock);
card->vlangrp = NULL;
#endif
+ spin_lock_init(&card->lock);
spin_lock_init(&card->ip_lock);
spin_lock_init(&card->thread_mask_lock);
card->thread_start_mask = 0;
@@ -1626,16 +1629,6 @@ qeth_cmd_timeout(unsigned long data)
spin_unlock_irqrestore(&reply->card->lock, flags);
}
-static void
-qeth_reset_ip_addresses(struct qeth_card *card)
-{
- QETH_DBF_TEXT(trace, 2, "rstipadd");
-
- qeth_clear_ip_list(card, 0, 1);
- /* this function will also schedule the SET_IP_THREAD */
- qeth_set_multicast_list(card->dev);
-}
-
static struct qeth_ipa_cmd *
qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob)
{
@@ -1664,9 +1657,8 @@ qeth_check_ipa_data(struct qeth_card *ca
"IP address reset.\n",
QETH_CARD_IFNAME(card),
card->info.chpid);
- card->lan_online = 1;
netif_carrier_on(card->dev);
- qeth_reset_ip_addresses(card);
+ qeth_schedule_recovery(card);
return NULL;
case IPA_CMD_REGISTER_LOCAL_ADDR:
QETH_DBF_TEXT(trace,3, "irla");
@@ -2387,6 +2379,7 @@ qeth_layer2_rebuild_skb(struct qeth_card
skb_pull(skb, VLAN_HLEN);
}
#endif
+ *((__u32 *)skb->cb) = ++card->seqno.pkt_seqno;
return vlan_id;
}
@@ -3014,7 +3007,7 @@ qeth_alloc_buffer_pool(struct qeth_card
return -ENOMEM;
}
for(j = 0; j < QETH_MAX_BUFFER_ELEMENTS(card); ++j){
- ptr = (void *) __get_free_page(GFP_KERNEL);
+ ptr = (void *) __get_free_page(GFP_KERNEL|GFP_DMA);
if (!ptr) {
while (j > 0)
free_page((unsigned long)
@@ -3058,7 +3051,8 @@ qeth_alloc_qdio_buffers(struct qeth_card
if (card->qdio.state == QETH_QDIO_ALLOCATED)
return 0;
- card->qdio.in_q = kmalloc(sizeof(struct qeth_qdio_q), GFP_KERNEL);
+ card->qdio.in_q = kmalloc(sizeof(struct qeth_qdio_q),
+ GFP_KERNEL|GFP_DMA);
if (!card->qdio.in_q)
return - ENOMEM;
QETH_DBF_TEXT(setup, 2, "inq");
@@ -3083,7 +3077,7 @@ qeth_alloc_qdio_buffers(struct qeth_card
}
for (i = 0; i < card->qdio.no_out_queues; ++i){
card->qdio.out_qs[i] = kmalloc(sizeof(struct qeth_qdio_out_q),
- GFP_KERNEL);
+ GFP_KERNEL|GFP_DMA);
if (!card->qdio.out_qs[i]){
while (i > 0)
kfree(card->qdio.out_qs[--i]);
@@ -6470,6 +6464,9 @@ qeth_query_ipassists_cb(struct qeth_card
if (cmd->hdr.prot_version == QETH_PROT_IPV4) {
card->options.ipa4.supported_funcs = cmd->hdr.ipa_supported;
card->options.ipa4.enabled_funcs = cmd->hdr.ipa_enabled;
+ /* Disable IPV6 support hard coded for Hipersockets */
+ if(card->info.type == QETH_CARD_TYPE_IQD)
+ card->options.ipa4.supported_funcs &= ~IPA_IPV6;
} else {
#ifdef CONFIG_QETH_IPV6
card->options.ipa6.supported_funcs = cmd->hdr.ipa_supported;
diff --git a/net/ieee80211/ieee80211_tx.c b/net/ieee80211/ieee80211_tx.c
--- a/net/ieee80211/ieee80211_tx.c
+++ b/net/ieee80211/ieee80211_tx.c
@@ -207,7 +207,7 @@ void ieee80211_txb_free(struct ieee80211
}
static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size,
- int gfp_mask)
+ unsigned int gfp_mask)
{
struct ieee80211_txb *txb;
int i;
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Roland Dreier @ 2005-10-03 22:17 UTC (permalink / raw)
To: Hal Rosenstock; +Cc: netdev, openib-general
In-Reply-To: <1128375898.4397.389.camel@hal.voltaire.com>
Hal> I wanted to get this in so I could add the code to IPoIB to
Hal> use this so SDP and others no longer poke at IPoIB's private
Hal> data. This is a small change. Should this change be made
Hal> locally (in OpenIB) first (and we'll have our own modified
Hal> netdevice.h for a short time) ?
Yes, I think that's the way to develop this sort of thing.
- R.
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Hal Rosenstock @ 2005-10-03 21:50 UTC (permalink / raw)
To: Roland Dreier; +Cc: netdev, openib-general
In-Reply-To: <523bni9tck.fsf@cisco.com>
On Mon, 2005-10-03 at 17:35, Roland Dreier wrote:
> Hal> We will have this shortly. I have been waiting for this to
> Hal> propose the changes to SDP et al.
>
> OK, but I don't think it makes sense to merge this upstream until
> there is in-tree code that will use it.
I wanted to get this in so I could add the code to IPoIB to use this so SDP
and others no longer poke at IPoIB's private data. This is a small
change. Should this change be made locally (in OpenIB) first (and we'll
have our own modified netdevice.h for a short time) ?
-- Hal
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Roland Dreier @ 2005-10-03 21:35 UTC (permalink / raw)
To: Hal Rosenstock; +Cc: netdev, openib-general
In-Reply-To: <1128374816.4397.343.camel@hal.voltaire.com>
Hal> We will have this shortly. I have been waiting for this to
Hal> propose the changes to SDP et al.
OK, but I don't think it makes sense to merge this upstream until
there is in-tree code that will use it.
- R.
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: David S. Miller @ 2005-10-03 21:34 UTC (permalink / raw)
To: rolandd; +Cc: openib-general, netdev
In-Reply-To: <52fyri9tnf.fsf@cisco.com>
From: Roland Dreier <rolandd@cisco.com>
Date: Mon, 03 Oct 2005 14:29:08 -0700
> Hal> netdevice.h: Add RDMA private pointer to the net_device structure
>
> I don't think there's any point in making this change until we have
> some code that will use the pointer.
I definitely agree.
^ permalink raw reply
* Re: Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Roland Dreier @ 2005-10-03 21:30 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: openib-general, netdev
In-Reply-To: <20051003135407.072aaff6@dxpl.pdx.osdl.net>
Stephen> Who is going to use it? Is RDMA being submitted for code
Stephen> review?
I agree that we should hold off on this until there's an in-tree user.
However, just as a clarification, we're trying to move from "ib" to
"rdma" nomenclature as we try to make the existing kernel InfiniBand
layer a more generic layer than can support both IB and iWARP. So new
code should use "rdma" names.
- R.
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Roland Dreier @ 2005-10-03 21:29 UTC (permalink / raw)
To: Hal Rosenstock; +Cc: netdev, openib-general
In-Reply-To: <1128365323.4397.38.camel@hal.voltaire.com>
Hal> netdevice.h: Add RDMA private pointer to the net_device structure
I don't think there's any point in making this change until we have
some code that will use the pointer.
- R.
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Hal Rosenstock @ 2005-10-03 21:26 UTC (permalink / raw)
To: Roland Dreier; +Cc: netdev, openib-general
In-Reply-To: <52fyri9tnf.fsf@cisco.com>
On Mon, 2005-10-03 at 17:29, Roland Dreier wrote:
> Hal> netdevice.h: Add RDMA private pointer to the net_device structure
>
> I don't think there's any point in making this change until we have
> some code that will use the pointer.
We will have this shortly. I have been waiting for this to propose the
changes to SDP et al.
-- Hal
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Stephen Hemminger @ 2005-10-03 20:54 UTC (permalink / raw)
To: Hal Rosenstock; +Cc: netdev, openib-general
In-Reply-To: <1128365323.4397.38.camel@hal.voltaire.com>
On 03 Oct 2005 14:48:44 -0400
Hal Rosenstock <halr@voltaire.com> wrote:
> netdevice.h: Add RDMA private pointer to the net_device structure
>
> Signed-off-by: Hal Rosenstock <halr@voltaire.com>
Who is going to use it? Is RDMA being submitted for code review?
--
Stephen Hemminger <shemminger@osdl.org>
OSDL http://developer.osdl.org/~shemminger
^ permalink raw reply
* Re: [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Hal Rosenstock @ 2005-10-03 20:53 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev, openib-general
In-Reply-To: <20051003135407.072aaff6@dxpl.pdx.osdl.net>
On Mon, 2005-10-03 at 16:54, Stephen Hemminger wrote:
> On 03 Oct 2005 14:48:44 -0400
> Hal Rosenstock <halr@voltaire.com> wrote:
>
> > netdevice.h: Add RDMA private pointer to the net_device structure
> >
> > Signed-off-by: Hal Rosenstock <halr@voltaire.com>
>
> Who is going to use it? Is RDMA being submitted for code review?
IB (and ultimately RDMA) will use it.
-- Hal
^ permalink raw reply
* [PATCH] netdevice.h: Add RDMA private pointer to the net_device structure
From: Hal Rosenstock @ 2005-10-03 18:48 UTC (permalink / raw)
To: netdev; +Cc: openib-general
netdevice.h: Add RDMA private pointer to the net_device structure
Signed-off-by: Hal Rosenstock <halr@voltaire.com>
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -366,6 +366,7 @@ struct net_device
void *ip6_ptr; /* IPv6 specific data */
void *ec_ptr; /* Econet specific data */
void *ax25_ptr; /* AX.25 specific data */
+ void *rdma_ptr; /* RDMA specific data */
/*
* Cache line mostly used on receive path (including eth_type_trans())
^ permalink raw reply
* [patch] airo: fix resume
From: Michal Schmidt @ 2005-10-03 11:44 UTC (permalink / raw)
To: Benjamin Reed; +Cc: Jeff Garzik, netdev
[-- Attachment #1: Type: text/plain, Size: 286 bytes --]
Cisco Aironet doesn't resume properly from swsusp, because the resume
method confuses a PM_EVENT_* for a PCI power state. It thinks that it is
resuming from PCI_D1 and doesn't do the necessary initialization of the
card.
Signed-off-by: Michal Schmidt <xschmi00@stud.feec.vutbr.cz>
[-- Attachment #2: airo-fix-resume.diff --]
[-- Type: text/plain, Size: 719 bytes --]
--- linux-vanilla/drivers/net/wireless/airo.c 2005-09-29 20:44:01.000000000 +0200
+++ linux-mich/drivers/net/wireless/airo.c 2005-10-01 15:07:34.000000000 +0200
@@ -5515,12 +5515,13 @@ static int airo_pci_resume(struct pci_de
struct net_device *dev = pci_get_drvdata(pdev);
struct airo_info *ai = dev->priv;
Resp rsp;
+ pci_power_t prev_state = pdev->current_state;
- pci_set_power_state(pdev, 0);
+ pci_set_power_state(pdev, PCI_D0);
pci_restore_state(pdev);
- pci_enable_wake(pdev, pci_choose_state(pdev, ai->power), 0);
+ pci_enable_wake(pdev, PCI_D0, 0);
- if (ai->power.event > 1) {
+ if (prev_state != PCI_D1) {
reset_card(dev, 0);
mpi_init_descriptors(ai);
setup_card(ai, dev->dev_addr, 0);
^ permalink raw reply
* Get rid of everything you owe with out sending another dime
From: abraham stephens @ 2005-10-03 10:53 UTC (permalink / raw)
To: Loni Crawford; +Cc: olson, ralf, joseph, apache-bounce, dmsdk, netdev
Eliminate all you are indebted for without mailing another cent. Stop the
embarrassing telephone calls. Bring a stop to the sending of checks! Believe
it or not a good number lending orgizations not following the banking laws
here. Amazing but correct! Visit our web site for detailed information
concerning our procedure at N O expense or requirement. You have naught to
lose and heaps to reap.
http://uk.geocities.com/dena_schrader/?we=7s.Eradicate all that you owe
with out mailing an other dime
Conprehensive info or to discontinue getting or to comprehend postal
address
A cluster of tall trees with leafy tops stood a short distance outside the
walls, and here the boy landed and sat down to rest in the refreshing shade.
The city seemed as hushed and still as if it were deserted, and before him
stretched the vast plain of white, heated sands
He strained his eyes to catch a glimpse of the band of warriors he had
passed, but they were moving slowly and had not yet appeared
^ permalink raw reply
* ignore, just a test ....
From: Frank Pavlic @ 2005-10-03 10:19 UTC (permalink / raw)
To: linux-net, netdev, linux-kernel
test
^ permalink raw reply
* Re: [PATCH] fix ipv6 fragment ID selection at slow path
From: Herbert Xu @ 2005-10-03 0:18 UTC (permalink / raw)
To: Yan Zheng; +Cc: linux-kernel, netdev, roque
In-Reply-To: <433FED06.8070806@gmail.com>
Yan Zheng <yzcorp@gmail.com> wrote:
>
> --- linux-2.6.13.2/net/ipv6/ip6_output.c 2005-09-17 09:02:12.000000000 +0800
> +++ linux/net/ipv6/ip6_output.c 2005-10-02 22:12:54.000000000 +0800
> @@ -701,7 +701,7 @@
> */
> fh->nexthdr = nexthdr;
> fh->reserved = 0;
> - if (frag_id) {
> + if (!frag_id) {
> ipv6_select_ident(skb, fh);
> frag_id = fh->identification;
> } else
This patch makes sense to me.
Please add a Signed-off-by line and send the patch to
davem@davemloft.net and yoshfuji@linux-ipv6.org.
Thanks,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply
* Re: [RFC: 2.6 patch] net/sunrpc/: possible cleanups
From: Adrian Bunk @ 2005-10-02 14:41 UTC (permalink / raw)
To: Alexey Dobriyan
Cc: David Miller, neilb, trond.myklebust, linux-kernel, nfs, netdev
In-Reply-To: <20051001164019.GB8633@mipter.zuzino.mipt.ru>
On Sat, Oct 01, 2005 at 08:40:19PM +0400, Alexey Dobriyan wrote:
> On Sat, Oct 01, 2005 at 04:20:41PM +0200, Adrian Bunk wrote:
> > -/* Just increments the mechanism's reference count and returns its input: */
> > -struct gss_api_mech * gss_mech_get(struct gss_api_mech *);
> > -
>
> > -struct gss_api_mech *
> > +static struct gss_api_mech *
> > gss_mech_get(struct gss_api_mech *gm)
>
> Comment is lost.
The comment made sense for the prototype at the header, but the function
now has only one caller in the file where it's defined.
If someone needs a comment to figure out what a function whose complete
contents is
static struct gss_api_mech *
gss_mech_get(struct gss_api_mech *gm)
{
__module_get(gm->gm_owner);
return gm;
}
does, the problem is not a missing comment.
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply
* [PATCH] fix ipv6 fragment ID selection at slow path
From: Yan Zheng @ 2005-10-02 14:21 UTC (permalink / raw)
To: linux-kernel, netdev, roque
[-- Attachment #1: Type: text/plain, Size: 1 bytes --]
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 332 bytes --]
--- linux-2.6.13.2/net/ipv6/ip6_output.c 2005-09-17 09:02:12.000000000 +0800
+++ linux/net/ipv6/ip6_output.c 2005-10-02 22:12:54.000000000 +0800
@@ -701,7 +701,7 @@
*/
fh->nexthdr = nexthdr;
fh->reserved = 0;
- if (frag_id) {
+ if (!frag_id) {
ipv6_select_ident(skb, fh);
frag_id = fh->identification;
} else
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox