mmc: s3c6410: enable ADMA feature in 6410 sdhci controller
[safe/jmp/linux-2.6] / net / 802 / garp.c
index 3b78f7b..941f2a3 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/etherdevice.h>
 #include <linux/rtnetlink.h>
 #include <linux/llc.h>
+#include <linux/slab.h>
 #include <net/llc.h>
 #include <net/llc_pdu.h>
 #include <net/garp.h>
@@ -323,7 +324,10 @@ static void garp_attr_event(struct garp_applicant *app,
        case GARP_ACTION_NONE:
                break;
        case GARP_ACTION_S_JOIN_IN:
-               garp_pdu_append_attr(app, attr, GARP_JOIN_IN);
+               /* When appending the attribute fails, don't update state in
+                * order to retry on next TRANSMIT_PDU event. */
+               if (garp_pdu_append_attr(app, attr, GARP_JOIN_IN) < 0)
+                       return;
                break;
        case GARP_ACTION_S_LEAVE_EMPTY:
                garp_pdu_append_attr(app, attr, GARP_LEAVE_EMPTY);
@@ -572,7 +576,7 @@ int garp_init_applicant(struct net_device *dev, struct garp_application *appl)
        if (!app)
                goto err2;
 
-       err = dev_mc_add(dev, appl->proto.group_address, ETH_ALEN, 0);
+       err = dev_mc_add(dev, appl->proto.group_address);
        if (err < 0)
                goto err3;
 
@@ -612,7 +616,7 @@ void garp_uninit_applicant(struct net_device *dev, struct garp_application *appl
        garp_pdu_queue(app);
        garp_queue_xmit(app);
 
-       dev_mc_delete(dev, appl->proto.group_address, ETH_ALEN, 0);
+       dev_mc_del(dev, appl->proto.group_address);
        kfree(app);
        garp_release_port(dev);
 }