Bug 5519

Summary: (net bonding) Driver Marks itself as not VLAN Capable
Product: Drivers Reporter: Steve Wormley (steve)
Component: NetworkAssignee: Jeff Garzik (jgarzik)
Status: CLOSED CODE_FIX    
Severity: normal CC: droid
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.14 Subsystem:
Regression: --- Bisected commit-id:
Attachments: bond_main.patch

Description Steve Wormley 2005-10-28 13:56:19 UTC
Most recent kernel where this bug did not occur:2.6.13(last tested)
Distribution: SLES 9
Hardware Environment: Dual Opteron
Software Environment: n/a
Problem Description: VLAN driver cannot configure bonding device.

After ifenslave of a VLAN capable device to a bonding device, the bonding device
still marks itself as not VLAN capable.

This appears to be a problem with the bond_dev->features flags being cleared by
the VLAN Capabilities code which bond_compute_features then wipes out by using
bond->bond_features.

I added:
        bond->bond_features = bond_dev->features;
before
        bond_compute_features(bond);

in bond_main.c bond_enslave() to fix this issue for me.
Comment 1 Andrew Morton 2005-10-28 14:14:37 UTC

Begin forwarded message:

Date: Fri, 28 Oct 2005 14:00:08 -0700
From: bugme-daemon@kernel-bugs.osdl.org
To: bugme-new@lists.osdl.org
Subject: [Bugme-new] [Bug 5519] New: Bonding Driver Marks itself as not VLAN Capable


http://bugzilla.kernel.org/show_bug.cgi?id=5519

           Summary: Bonding Driver Marks itself as not VLAN Capable
    Kernel Version: 2.6.14
            Status: NEW
          Severity: normal
             Owner: jgarzik@pobox.com
         Submitter: steve@wormley.com


Most recent kernel where this bug did not occur:2.6.13(last tested)
Distribution: SLES 9
Hardware Environment: Dual Opteron
Software Environment: n/a
Problem Description: VLAN driver cannot configure bonding device.

After ifenslave of a VLAN capable device to a bonding device, the bonding device
still marks itself as not VLAN capable.

This appears to be a problem with the bond_dev->features flags being cleared by
the VLAN Capabilities code which bond_compute_features then wipes out by using
bond->bond_features.

I added:
        bond->bond_features = bond_dev->features;
before
        bond_compute_features(bond);

in bond_main.c bond_enslave() to fix this issue for me.

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

Comment 2 Valery Kartel 2005-12-16 03:18:07 UTC
Bug in bond_compute_features(bond), I think. 
At function start the 'features' variable sets to 'bond->bond_features' value. 
[line 1617] int features = bond->bond_features; 
Then it compute something. 
But at function end this computed features are going to 'bond_dev->features' 
not to 'bond->bond_features'. 
[line 1636] bond_dev->features = features; 
 
I don't know where the right fix must be at the start or at the end of 
function.  
 
Comment 3 Valery Kartel 2005-12-16 03:27:12 UTC
Created attachment 6846 [details]
bond_main.patch