[kernel] r4994 - in dists/sid/linux-2.6/debian: . patches-debian patches-debian/series

Dann Frazier dannf at costa.debian.org
Thu Dec 8 18:00:18 UTC 2005


Author: dannf
Date: Thu Dec  8 18:00:17 2005
New Revision: 4994

Added:
   dists/sid/linux-2.6/debian/patches-debian/net-bonding-consolidation-fix.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches-debian/series/2.6.14-5
Log:
* fix feature consolidation in bonding driver.  (closes #340068)

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	(original)
+++ dists/sid/linux-2.6/debian/changelog	Thu Dec  8 18:00:17 2005
@@ -1,4 +1,4 @@
-linux-2.6 (2.6.14-5) UNRELEASED; urgency=low
+linux-2.6 (2.6.14-5) unstable; urgency=low
 
   [ dann frazier ]
   * ia64-new-assembler-fix.patch
@@ -21,8 +21,9 @@
   * drivers-scsi-buslogic-sysfs.patch
     expose buslogic devices via sysfs so that they are detected
     by initramfs-tools/udev.  (closes #342057)
+  * fix feature consolidation in bonding driver.  (closes #340068)
 
- -- dann frazier <dannf at dannf.org>  Thu,  8 Dec 2005 09:59:30 -0700
+ -- dann frazier <dannf at debian.org>  Thu,  8 Dec 2005 10:59:31 -0700
 
 linux-2.6 (2.6.14-4) unstable; urgency=low
 

Added: dists/sid/linux-2.6/debian/patches-debian/net-bonding-consolidation-fix.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches-debian/net-bonding-consolidation-fix.patch	Thu Dec  8 18:00:17 2005
@@ -0,0 +1,100 @@
+From: Jay Vosburgh <fubar at us.ibm.com>
+Date: Sat, 5 Nov 2005 02:45:45 +0000 (-0800)
+Subject: [PATCH] bonding: fix feature consolidation
+X-Git-Tag: v2.6.15-rc1
+X-Git-Url: http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=8e3babcd69ec0fde874838e276eb0b211c6a5647
+
+[PATCH] bonding: fix feature consolidation
+
+This should resolve http://bugzilla.kernel.org/show_bug.cgi?id=5519
+
+The current feature computation loses bits that it doesn't know about,
+resulting in an inability to add VLANs and possibly other havoc.
+Rewrote function to preserve bits it doesn't know about, remove an
+unneeded state variable, and simplify the code.
+
+Signed-off-by: Jay Vosburgh <fubar at us.ibm.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+
+--- a/drivers/net/bonding/bond_main.c
++++ b/drivers/net/bonding/bond_main.c
+@@ -1604,35 +1604,27 @@ static int bond_sethwaddr(struct net_dev
+ 	(NETIF_F_SG|NETIF_F_IP_CSUM|NETIF_F_NO_CSUM|NETIF_F_HW_CSUM)
+ 
+ /* 
+- * Compute the features available to the bonding device by 
+- * intersection of all of the slave devices' BOND_INTERSECT_FEATURES.
+- * Call this after attaching or detaching a slave to update the 
+- * bond's features.
++ * Compute the common dev->feature set available to all slaves.  Some
++ * feature bits are managed elsewhere, so preserve feature bits set on
++ * master device that are not part of the examined set.
+  */
+ static int bond_compute_features(struct bonding *bond)
+ {
+-	int i;
++	unsigned long features = BOND_INTERSECT_FEATURES;
+ 	struct slave *slave;
+ 	struct net_device *bond_dev = bond->dev;
+-	int features = bond->bond_features;
++	int i;
+ 
+-	bond_for_each_slave(bond, slave, i) {
+-		struct net_device * slave_dev = slave->dev;
+-		if (i == 0) {
+-			features |= BOND_INTERSECT_FEATURES;
+-		}
+-		features &=
+-			~(~slave_dev->features & BOND_INTERSECT_FEATURES);
+-	}
++	bond_for_each_slave(bond, slave, i)
++		features &= (slave->dev->features & BOND_INTERSECT_FEATURES);
+ 
+-	/* turn off NETIF_F_SG if we need a csum and h/w can't do it */
+ 	if ((features & NETIF_F_SG) && 
+-		!(features & (NETIF_F_IP_CSUM |
+-			      NETIF_F_NO_CSUM |
+-			      NETIF_F_HW_CSUM))) {
++	    !(features & (NETIF_F_IP_CSUM |
++			  NETIF_F_NO_CSUM |
++			  NETIF_F_HW_CSUM)))
+ 		features &= ~NETIF_F_SG;
+-	}
+ 
++	features |= (bond_dev->features & ~BOND_INTERSECT_FEATURES);
+ 	bond_dev->features = features;
+ 
+ 	return 0;
+@@ -4561,8 +4553,6 @@ static int __init bond_init(struct net_d
+ 			       NETIF_F_HW_VLAN_RX |
+ 			       NETIF_F_HW_VLAN_FILTER);
+ 
+-	bond->bond_features = bond_dev->features;
+-
+ #ifdef CONFIG_PROC_FS
+ 	bond_create_proc_entry(bond);
+ #endif
+--- 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.4"
+-#define DRV_RELDATE	"September 26, 2005"
++#define DRV_VERSION	"2.6.5"
++#define DRV_RELDATE	"November 4, 2005"
+ #define DRV_NAME	"bonding"
+ #define DRV_DESCRIPTION	"Ethernet Channel Bonding Driver"
+ 
+@@ -211,9 +211,6 @@ struct bonding {
+ 	struct   bond_params params;
+ 	struct   list_head vlan_list;
+ 	struct   vlan_group *vlgrp;
+-	/* the features the bonding device supports, independently 
+-	 * of any slaves */
+-	int	 bond_features; 
+ };
+ 
+ /**

Modified: dists/sid/linux-2.6/debian/patches-debian/series/2.6.14-5
==============================================================================
--- dists/sid/linux-2.6/debian/patches-debian/series/2.6.14-5	(original)
+++ dists/sid/linux-2.6/debian/patches-debian/series/2.6.14-5	Thu Dec  8 18:00:17 2005
@@ -1,2 +1,3 @@
 + ia64-new-assembler-fix.patch
 + drivers-scsi-buslogic-sysfs.patch
++ net-bonding-consolidation-fix.patch



More information about the Kernel-svn-changes mailing list