Changeset 41817


Ignore:
Timestamp:
2014-07-24T11:12:59+02:00 (4 years ago)
Author:
nbd
Message:

kernel: backport upstream bridge multicast snooping fixes

Signed-off-by: Felix Fietkau <nbd@…>

Location:
trunk/target/linux/generic/patches-3.10
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/patches-3.10/120-bridge_allow_receiption_on_disabled_port.patch

    r37347 r41817  
    1616--- a/net/bridge/br_input.c 
    1717+++ b/net/bridge/br_input.c 
    18 @@ -139,10 +139,14 @@ drop: 
     18@@ -140,10 +140,14 @@ drop: 
    1919 static int br_handle_local_finish(struct sk_buff *skb) 
    2020 { 
     
    3434 } 
    3535  
    36 @@ -212,6 +216,18 @@ rx_handler_result_t br_handle_frame(stru 
     36@@ -213,6 +217,18 @@ rx_handler_result_t br_handle_frame(stru 
    3737  
    3838 forward: 
  • trunk/target/linux/generic/patches-3.10/642-bridge_port_isolate.patch

    r36663 r41817  
    11--- a/net/bridge/br_private.h 
    22+++ b/net/bridge/br_private.h 
    3 @@ -157,6 +157,7 @@ struct net_bridge_port 
     3@@ -171,6 +171,7 @@ struct net_bridge_port 
    44 #define BR_ROOT_BLOCK          0x00000004 
    55 #define BR_MULTICAST_FAST_LEAVE        0x00000008 
     
    88  
    99 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING 
    10         u32                             multicast_startup_queries_sent; 
     10        struct bridge_mcast_query       ip4_query; 
    1111--- a/net/bridge/br_sysfs_if.c 
    1212+++ b/net/bridge/br_sysfs_if.c 
     
    4444--- a/net/bridge/br_input.c 
    4545+++ b/net/bridge/br_input.c 
    46 @@ -114,8 +114,8 @@ int br_handle_frame_finish(struct sk_buf 
     46@@ -115,8 +115,8 @@ int br_handle_frame_finish(struct sk_buf 
    4747                        skb2 = skb; 
    4848  
  • trunk/target/linux/generic/patches-3.10/643-bridge_remove_ipv6_dependency.patch

    r41352 r41817  
    2626--- a/net/ipv6/Makefile 
    2727+++ b/net/ipv6/Makefile 
    28 @@ -44,3 +44,4 @@ obj-y += addrconf_core.o exthdrs_core.o 
     28@@ -44,3 +44,4 @@ obj-y += addrconf_core.o exthdrs_core.o  
    2929 obj-$(CONFIG_INET) += output_core.o protocol.o $(ipv6-offload) 
    3030  
  • trunk/target/linux/generic/patches-3.10/644-bridge_optimize_netfilter_hooks.patch

    r41352 r41817  
    3939 } 
    4040  
    41 @@ -209,7 +209,7 @@ rx_handler_result_t br_handle_frame(stru 
     41@@ -210,7 +210,7 @@ rx_handler_result_t br_handle_frame(stru 
    4242                } 
    4343  
     
    4848                        return RX_HANDLER_CONSUMED; /* consumed by filter */ 
    4949                } else { 
    50 @@ -224,7 +224,7 @@ forward: 
     50@@ -225,7 +225,7 @@ forward: 
    5151                if (ether_addr_equal(p->br->dev->dev_addr, dest)) 
    5252                        skb->pkt_type = PACKET_HOST; 
     
    5757                        break; 
    5858  
    59 @@ -246,7 +246,7 @@ forward: 
     59@@ -247,7 +247,7 @@ forward: 
    6060                if (ether_addr_equal(p->br->dev->dev_addr, dest)) 
    6161                        skb->pkt_type = PACKET_HOST; 
     
    6868--- a/net/bridge/br_multicast.c 
    6969+++ b/net/bridge/br_multicast.c 
    70 @@ -783,7 +783,7 @@ static void __br_multicast_send_query(st 
     70@@ -802,7 +802,7 @@ static void __br_multicast_send_query(st 
    7171        if (port) { 
    7272                __skb_push(skb, sizeof(struct ethhdr)); 
     
    9797--- a/net/bridge/br_private.h 
    9898+++ b/net/bridge/br_private.h 
    99 @@ -696,15 +696,29 @@ static inline u16 br_get_pvid(const stru 
     99@@ -734,15 +734,29 @@ static inline u16 br_get_pvid(const stru 
    100100  
    101101 /* br_netfilter.c */ 
  • trunk/target/linux/generic/patches-3.10/645-bridge_multicast_to_unicast.patch

    r41777 r41817  
    11--- a/net/bridge/br_multicast.c 
    22+++ b/net/bridge/br_multicast.c 
    3 @@ -630,7 +630,8 @@ struct net_bridge_port_group *br_multica 
     3@@ -634,7 +634,8 @@ struct net_bridge_port_group *br_multica 
    44                        struct net_bridge_port *port, 
    55                        struct br_ip *group, 
     
    1111        struct net_bridge_port_group *p; 
    1212  
    13 @@ -645,12 +646,33 @@ struct net_bridge_port_group *br_multica 
     13@@ -649,12 +650,33 @@ struct net_bridge_port_group *br_multica 
    1414        hlist_add_head(&p->mglist, &port->mglist); 
    1515        setup_timer(&p->timer, br_multicast_port_group_expired, 
     
    4646        struct net_bridge_mdb_entry *mp; 
    4747        struct net_bridge_port_group *p; 
    48 @@ -677,13 +699,13 @@ static int br_multicast_add_group(struct 
     48@@ -681,13 +703,13 @@ static int br_multicast_add_group(struct 
    4949        for (pp = &mp->ports; 
    5050             (p = mlock_dereference(*pp, br)) != NULL; 
     
    6262                goto err; 
    6363        rcu_assign_pointer(*pp, p); 
    64 @@ -702,7 +724,7 @@ err: 
     64@@ -706,7 +728,7 @@ err: 
    6565 static int br_ip4_multicast_add_group(struct net_bridge *br, 
    6666                                      struct net_bridge_port *port, 
     
    7171        struct br_ip br_group; 
    7272  
    73 @@ -713,14 +735,14 @@ static int br_ip4_multicast_add_group(st 
     73@@ -717,14 +739,14 @@ static int br_ip4_multicast_add_group(st 
    7474        br_group.proto = htons(ETH_P_IP); 
    7575        br_group.vid = vid; 
     
    8888        struct br_ip br_group; 
    8989  
    90 @@ -731,7 +753,7 @@ static int br_ip6_multicast_add_group(st 
     90@@ -735,7 +757,7 @@ static int br_ip6_multicast_add_group(st 
    9191        br_group.proto = htons(ETH_P_IPV6); 
    9292        br_group.vid = vid; 
     
    9797 #endif 
    9898  
    99 @@ -898,6 +920,7 @@ static int br_ip4_multicast_igmp3_report 
     99@@ -949,6 +971,7 @@ static int br_ip4_multicast_igmp3_report 
    100100                                         struct net_bridge_port *port, 
    101101                                         struct sk_buff *skb) 
     
    105105        struct igmpv3_grec *grec; 
    106106        int i; 
    107 @@ -943,7 +966,7 @@ static int br_ip4_multicast_igmp3_report 
     107@@ -994,7 +1017,7 @@ static int br_ip4_multicast_igmp3_report 
    108108                        continue; 
    109109                } 
     
    114114                        break; 
    115115        } 
    116 @@ -956,6 +979,7 @@ static int br_ip6_multicast_mld2_report( 
     116@@ -1007,6 +1030,7 @@ static int br_ip6_multicast_mld2_report( 
    117117                                        struct net_bridge_port *port, 
    118118                                        struct sk_buff *skb) 
     
    122122        struct mld2_grec *grec; 
    123123        int i; 
    124 @@ -1006,7 +1030,7 @@ static int br_ip6_multicast_mld2_report( 
     124@@ -1057,7 +1081,7 @@ static int br_ip6_multicast_mld2_report( 
    125125                } 
    126126  
     
    131131                        break; 
    132132        } 
    133 @@ -1235,7 +1259,8 @@ out: 
    134   
    135  static void br_multicast_leave_group(struct net_bridge *br, 
     133@@ -1302,7 +1326,8 @@ static void br_multicast_leave_group(str 
    136134                                     struct net_bridge_port *port, 
    137 -                                    struct br_ip *group) 
    138 +                                    struct br_ip *group, 
     135                                     struct br_ip *group, 
     136                                     struct bridge_mcast_querier *querier, 
     137-                                    struct bridge_mcast_query *query) 
     138+                                    struct bridge_mcast_query *query, 
    139139+                                    const unsigned char *src) 
    140140 { 
    141141        struct net_bridge_mdb_htable *mdb; 
    142142        struct net_bridge_mdb_entry *mp; 
    143 @@ -1260,7 +1285,7 @@ static void br_multicast_leave_group(str 
     143@@ -1352,7 +1377,7 @@ static void br_multicast_leave_group(str 
    144144                for (pp = &mp->ports; 
    145145                     (p = mlock_dereference(*pp, br)) != NULL; 
     
    150150  
    151151                        rcu_assign_pointer(*pp, p->next); 
    152 @@ -1294,7 +1319,7 @@ static void br_multicast_leave_group(str 
     152@@ -1386,7 +1411,7 @@ static void br_multicast_leave_group(str 
    153153        for (p = mlock_dereference(mp->ports, br); 
    154154             p != NULL; 
     
    159159  
    160160                if (!hlist_unhashed(&p->mglist) && 
    161 @@ -1313,8 +1338,8 @@ out: 
     161@@ -1404,8 +1429,8 @@ out: 
    162162  
    163163 static void br_ip4_multicast_leave_group(struct net_bridge *br, 
     
    169169 { 
    170170        struct br_ip br_group; 
    171   
    172 @@ -1325,14 +1350,14 @@ static void br_ip4_multicast_leave_group 
     171        struct bridge_mcast_query *query = port ? &port->ip4_query : 
     172@@ -1418,14 +1443,15 @@ static void br_ip4_multicast_leave_group 
    173173        br_group.proto = htons(ETH_P_IP); 
    174174        br_group.vid = vid; 
    175175  
    176 -       br_multicast_leave_group(br, port, &br_group); 
    177 +       br_multicast_leave_group(br, port, &br_group, src); 
     176-       br_multicast_leave_group(br, port, &br_group, &br->ip4_querier, query); 
     177+       br_multicast_leave_group(br, port, &br_group, &br->ip4_querier, query, 
     178+                                src); 
    178179 } 
    179180  
     
    186187 { 
    187188        struct br_ip br_group; 
    188   
    189 @@ -1343,7 +1368,7 @@ static void br_ip6_multicast_leave_group 
     189        struct bridge_mcast_query *query = port ? &port->ip6_query : 
     190@@ -1439,7 +1465,8 @@ static void br_ip6_multicast_leave_group 
    190191        br_group.proto = htons(ETH_P_IPV6); 
    191192        br_group.vid = vid; 
    192193  
    193 -       br_multicast_leave_group(br, port, &br_group); 
    194 +       br_multicast_leave_group(br, port, &br_group, src); 
     194-       br_multicast_leave_group(br, port, &br_group, &br->ip6_querier, query); 
     195+       br_multicast_leave_group(br, port, &br_group, &br->ip6_querier, query, 
     196+                                src); 
    195197 } 
    196198 #endif 
    197199  
    198 @@ -1351,6 +1376,7 @@ static int br_multicast_ipv4_rcv(struct 
     200@@ -1447,6 +1474,7 @@ static int br_multicast_ipv4_rcv(struct  
    199201                                 struct net_bridge_port *port, 
    200202                                 struct sk_buff *skb) 
     
    204206        const struct iphdr *iph; 
    205207        struct igmphdr *ih; 
    206 @@ -1426,7 +1452,7 @@ static int br_multicast_ipv4_rcv(struct 
     208@@ -1522,7 +1550,7 @@ static int br_multicast_ipv4_rcv(struct  
    207209        case IGMP_HOST_MEMBERSHIP_REPORT: 
    208210        case IGMPV2_HOST_MEMBERSHIP_REPORT: 
     
    213215        case IGMPV3_HOST_MEMBERSHIP_REPORT: 
    214216                err = br_ip4_multicast_igmp3_report(br, port, skb2); 
    215 @@ -1435,7 +1461,7 @@ static int br_multicast_ipv4_rcv(struct 
     217@@ -1531,7 +1559,7 @@ static int br_multicast_ipv4_rcv(struct  
    216218                err = br_ip4_multicast_query(br, port, skb2); 
    217219                break; 
     
    222224        } 
    223225  
    224 @@ -1452,6 +1478,7 @@ static int br_multicast_ipv6_rcv(struct 
     226@@ -1548,6 +1576,7 @@ static int br_multicast_ipv6_rcv(struct  
    225227                                 struct net_bridge_port *port, 
    226228                                 struct sk_buff *skb) 
     
    230232        const struct ipv6hdr *ip6h; 
    231233        u8 icmp6_type; 
    232 @@ -1557,7 +1584,8 @@ static int br_multicast_ipv6_rcv(struct 
     234@@ -1659,7 +1688,8 @@ static int br_multicast_ipv6_rcv(struct  
    233235                } 
    234236                mld = (struct mld_msg *)skb_transport_header(skb2); 
     
    240242            } 
    241243        case ICMPV6_MLD2_REPORT: 
    242 @@ -1574,7 +1602,7 @@ static int br_multicast_ipv6_rcv(struct 
     244@@ -1676,7 +1706,7 @@ static int br_multicast_ipv6_rcv(struct  
    243245                        goto out; 
    244246                } 
     
    251253--- a/net/bridge/br_private.h 
    252254+++ b/net/bridge/br_private.h 
    253 @@ -101,6 +101,9 @@ struct net_bridge_port_group { 
     255@@ -115,6 +115,9 @@ struct net_bridge_port_group { 
    254256        struct timer_list               timer; 
    255257        struct br_ip                    addr; 
     
    261263  
    262264 struct net_bridge_mdb_entry 
    263 @@ -158,6 +161,7 @@ struct net_bridge_port 
     265@@ -172,6 +175,7 @@ struct net_bridge_port 
    264266 #define BR_MULTICAST_FAST_LEAVE        0x00000008 
    265267 #define BR_ADMIN_COST          0x00000010 
     
    268270  
    269271 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING 
    270         u32                             multicast_startup_queries_sent; 
    271 @@ -469,7 +473,8 @@ extern struct net_bridge_port_group *br_ 
     272        struct bridge_mcast_query       ip4_query; 
     273@@ -489,7 +493,8 @@ extern struct net_bridge_port_group *br_ 
    272274                                struct net_bridge_port *port, 
    273275                                struct br_ip *group, 
     
    281283--- a/net/bridge/br_mdb.c 
    282284+++ b/net/bridge/br_mdb.c 
    283 @@ -340,7 +340,7 @@ static int br_mdb_add_group(struct net_b 
     285@@ -341,7 +341,7 @@ static int br_mdb_add_group(struct net_b 
    284286                        break; 
    285287        } 
  • trunk/target/linux/generic/patches-3.10/657-qdisc_reduce_truesize.patch

    r37832 r41817  
    2525--- a/net/sched/sch_fifo.c 
    2626+++ b/net/sched/sch_fifo.c 
    27 @@ -29,17 +29,21 @@ static int bfifo_enqueue(struct sk_buff 
     27@@ -29,17 +29,21 @@ static int bfifo_enqueue(struct sk_buff  
    2828  
    2929 static int pfifo_enqueue(struct sk_buff *skb, struct Qdisc *sch) 
Note: See TracChangeset for help on using the changeset viewer.