garp: retry sending JoinIn messages after allocation failures
Patrick McHardy [Thu, 17 Jul 2008 03:51:47 +0000 (20:51 -0700)]
Increase reliability by retrying to send JoinIn messages after memory
allocation failures on each TRANSMIT_PDU event until it succeeds.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

net/802/garp.c

index 3b78f7b..1dcb066 100644 (file)
@@ -323,7 +323,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);