| From 15b4d2de090ea978c40a5fe5fbab87bb06b3acc0 Mon Sep 17 00:00:00 2001 |
| From: Stephen Hemminger <stephen@networkplumber.org> |
| Date: Mon, 11 Feb 2013 08:22:22 +0000 |
| Subject: [PATCH] bridge: set priority of STP packets |
| |
| commit 547b4e718115eea74087e28d7fa70aec619200db upstream. |
| |
| Spanning Tree Protocol packets should have always been marked as |
| control packets, this causes them to get queued in the high prirority |
| FIFO. As Radia Perlman mentioned in her LCA talk, STP dies if bridge |
| gets overloaded and can't communicate. This is a long-standing bug back |
| to the first versions of Linux bridge. |
| |
| Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| net/bridge/br_stp_bpdu.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/net/bridge/br_stp_bpdu.c b/net/bridge/br_stp_bpdu.c |
| index edc7111b3db8..9fd76244adf6 100644 |
| --- a/net/bridge/br_stp_bpdu.c |
| +++ b/net/bridge/br_stp_bpdu.c |
| @@ -16,6 +16,7 @@ |
| #include <linux/etherdevice.h> |
| #include <linux/llc.h> |
| #include <linux/slab.h> |
| +#include <linux/pkt_sched.h> |
| #include <net/net_namespace.h> |
| #include <net/llc.h> |
| #include <net/llc_pdu.h> |
| @@ -40,6 +41,7 @@ static void br_send_bpdu(struct net_bridge_port *p, |
| |
| skb->dev = p->dev; |
| skb->protocol = htons(ETH_P_802_2); |
| + skb->priority = TC_PRIO_CONTROL; |
| |
| skb_reserve(skb, LLC_RESERVE); |
| memcpy(__skb_put(skb, length), data, length); |
| -- |
| 1.8.5.2 |
| |