The following patch for bonding driver has been accepted upstream (net tree) and needs to be pulled into ubuntu.
From: Sarveshwar Bandi <email address hidden>
Patch sets the lowest gso_max_size and gso_max_segs values of the slave devices during enslave and detach.
Signed-off-by: Sarveshwar Bandi <email address hidden> --- drivers/net/bonding/bond_main.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index b2530b0..5f5b69f 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1379,6 +1379,8 @@ static void bond_compute_features(struct bonding *bond) struct net_device *bond_dev = bond->dev; netdev_features_t vlan_features = BOND_VLAN_FEATURES; unsigned short max_hard_header_len = ETH_HLEN; + unsigned int gso_max_size = GSO_MAX_SIZE; + u16 gso_max_segs = GSO_MAX_SEGS; int i; unsigned int flags, dst_release_flag = IFF_XMIT_DST_RELEASE;
@@ -1394,11 +1396,16 @@ static void bond_compute_features(struct bonding *bond) dst_release_flag &= slave->dev->priv_flags; if (slave->dev->hard_header_len > max_hard_header_len) max_hard_header_len = slave->dev->hard_header_len; + + gso_max_size = min(gso_max_size, slave->dev->gso_max_size); + gso_max_segs = min(gso_max_segs, slave->dev->gso_max_segs); }
done: bond_dev->vlan_features = vlan_features; bond_dev->hard_header_len = max_hard_header_len; + bond_dev->gso_max_segs = gso_max_segs; + netif_set_gso_max_size(bond_dev, gso_max_size);
flags = bond_dev->priv_flags & ~IFF_XMIT_DST_RELEASE; bond_dev->priv_flags = flags | dst_release_flag; -- 1.7.9.5
The following patch for bonding driver has been accepted upstream (net tree) and needs to be pulled into ubuntu.
From: Sarveshwar Bandi <email address hidden>
Patch sets the lowest gso_max_size and gso_max_segs values of the slave devices during enslave and detach.
Signed-off-by: Sarveshwar Bandi <email address hidden> net/bonding/ bond_main. c | 7 +++++++
---
drivers/
1 file changed, 7 insertions(+)
diff --git a/drivers/ net/bonding/ bond_main. c b/drivers/ net/bonding/ bond_main. c index b2530b0..5f5b69f 100644 net/bonding/ bond_main. c net/bonding/ bond_main. c features( struct bonding *bond) DST_RELEASE;
--- a/drivers/
+++ b/drivers/
@@ -1379,6 +1379,8 @@ static void bond_compute_
struct net_device *bond_dev = bond->dev;
netdev_features_t vlan_features = BOND_VLAN_FEATURES;
unsigned short max_hard_header_len = ETH_HLEN;
+ unsigned int gso_max_size = GSO_MAX_SIZE;
+ u16 gso_max_segs = GSO_MAX_SEGS;
int i;
unsigned int flags, dst_release_flag = IFF_XMIT_
@@ -1394,11 +1396,16 @@ static void bond_compute_ features( struct bonding *bond) dev->priv_ flags; >dev->hard_ header_ len > max_hard_ header_ len) hard_header_ len = slave-> dev->hard_ header_ len; dev->gso_ max_size) ; dev->gso_ max_segs) ;
dst_release_flag &= slave->
if (slave-
max_
+
+ gso_max_size = min(gso_max_size, slave->
+ gso_max_segs = min(gso_max_segs, slave->
}
done: dev->vlan_ features = vlan_features; dev->hard_ header_ len = max_hard_ header_ len; >gso_max_ segs = gso_max_segs; gso_max_ size(bond_ dev, gso_max_size);
bond_
bond_
+ bond_dev-
+ netif_set_
flags = bond_dev- >priv_flags & ~IFF_XMIT_ DST_RELEASE; dev->priv_ flags = flags | dst_release_flag;
bond_
--
1.7.9.5