Commit e27e4d96 authored by Amir Noam's avatar Amir Noam Committed by Stephen Hemminger

[bonding 2.6] fix 802.3ad long fail over with high UDP Tx stress

parent cd36c392
...@@ -37,6 +37,16 @@ ...@@ -37,6 +37,16 @@
* 2003/05/01 - Shmulik Hen <shmulik.hen at intel dot com> * 2003/05/01 - Shmulik Hen <shmulik.hen at intel dot com>
* - Renamed bond_3ad_link_status_changed() to * - Renamed bond_3ad_link_status_changed() to
* bond_3ad_handle_link_change() for compatibility with TLB. * bond_3ad_handle_link_change() for compatibility with TLB.
*
* 2003/05/20 - Amir Noam <amir.noam at intel dot com>
* - Fix long fail over time when releasing last slave of an active
* aggregator - send LACPDU on unbind of slave to tell partner this
* port is no longer aggregatable.
*
* 2003/06/25 - Tsippy Mendelson <tsippy.mendelson at intel dot com>
* - Send LACPDU as highest priority packet to further fix the above
* problem on very high Tx traffic load where packets may get dropped
* by the slave.
*/ */
#include <linux/skbuff.h> #include <linux/skbuff.h>
...@@ -45,6 +55,7 @@ ...@@ -45,6 +55,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/if_bonding.h> #include <linux/if_bonding.h>
#include <linux/pkt_sched.h>
#include "bonding.h" #include "bonding.h"
#include "bond_3ad.h" #include "bond_3ad.h"
...@@ -905,6 +916,7 @@ static int ad_lacpdu_send(struct port *port) ...@@ -905,6 +916,7 @@ static int ad_lacpdu_send(struct port *port)
skb->mac.raw = skb->data; skb->mac.raw = skb->data;
skb->nh.raw = skb->data + ETH_HLEN; skb->nh.raw = skb->data + ETH_HLEN;
skb->protocol = PKT_TYPE_LACPDU; skb->protocol = PKT_TYPE_LACPDU;
skb->priority = TC_PRIO_CONTROL;
lacpdu_header = (struct lacpdu_header *)skb_put(skb, length); lacpdu_header = (struct lacpdu_header *)skb_put(skb, length);
......
...@@ -165,7 +165,7 @@ typedef struct marker { ...@@ -165,7 +165,7 @@ typedef struct marker {
// = 0x02 (marker response information) // = 0x02 (marker response information)
u8 marker_length; // = 0x16 u8 marker_length; // = 0x16
u16 requester_port; // The number assigned to the port by the requester u16 requester_port; // The number assigned to the port by the requester
struct mac_addr requester_system; // The requesters system id struct mac_addr requester_system; // The requester's system id
u32 requester_transaction_id; // The transaction id allocated by the requester, u32 requester_transaction_id; // The transaction id allocated by the requester,
u16 pad; // = 0 u16 pad; // = 0
u8 tlv_type_terminator; // = 0x00 u8 tlv_type_terminator; // = 0x00
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment