aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/iseries_veth.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c
index db83b0d31327..74ee937c4606 100644
--- a/drivers/net/iseries_veth.c
+++ b/drivers/net/iseries_veth.c
@@ -159,7 +159,6 @@ struct veth_port {
159 159
160 rwlock_t mcast_gate; 160 rwlock_t mcast_gate;
161 int promiscuous; 161 int promiscuous;
162 int all_mcast;
163 int num_mcast; 162 int num_mcast;
164 u64 mcast_addr[VETH_MAX_MCAST]; 163 u64 mcast_addr[VETH_MAX_MCAST];
165}; 164};
@@ -756,17 +755,15 @@ static void veth_set_multicast_list(struct net_device *dev)
756 755
757 write_lock_irqsave(&port->mcast_gate, flags); 756 write_lock_irqsave(&port->mcast_gate, flags);
758 757
759 if (dev->flags & IFF_PROMISC) { /* set promiscuous mode */ 758 if ((dev->flags & IFF_PROMISC) || (dev->flags & IFF_ALLMULTI) ||
760 printk(KERN_INFO "%s: Promiscuous mode enabled.\n", 759 (dev->mc_count > VETH_MAX_MCAST)) {
761 dev->name);
762 port->promiscuous = 1; 760 port->promiscuous = 1;
763 } else if ( (dev->flags & IFF_ALLMULTI)
764 || (dev->mc_count > VETH_MAX_MCAST) ) {
765 port->all_mcast = 1;
766 } else { 761 } else {
767 struct dev_mc_list *dmi = dev->mc_list; 762 struct dev_mc_list *dmi = dev->mc_list;
768 int i; 763 int i;
769 764
765 port->promiscuous = 0;
766
770 /* Update table */ 767 /* Update table */
771 port->num_mcast = 0; 768 port->num_mcast = 0;
772 769
@@ -1145,12 +1142,9 @@ static inline int veth_frame_wanted(struct veth_port *port, u64 mac_addr)
1145 if ( (mac_addr == port->mac_addr) || (mac_addr == 0xffffffffffff0000) ) 1142 if ( (mac_addr == port->mac_addr) || (mac_addr == 0xffffffffffff0000) )
1146 return 1; 1143 return 1;
1147 1144
1148 if (! (((char *) &mac_addr)[0] & 0x01))
1149 return 0;
1150
1151 read_lock_irqsave(&port->mcast_gate, flags); 1145 read_lock_irqsave(&port->mcast_gate, flags);
1152 1146
1153 if (port->promiscuous || port->all_mcast) { 1147 if (port->promiscuous) {
1154 wanted = 1; 1148 wanted = 1;
1155 goto out; 1149 goto out;
1156 } 1150 }