ns2: Don't try to add packets to the backlog on real errors

When writing to the AF_PACKET socket, we have to distinguish the
pseudo-errors like -ENOBUFS (where we do want to add to the backlog)
from real errors like -ENETDOWN, -EMSGSIZE, ... where we don't want
to add the failed packet to the backlog.

Change-Id: Ibbb6805da0f118466c4c91e458e62b63b84cb794
diff --git a/src/gb/gprs_ns2_fr.c b/src/gb/gprs_ns2_fr.c
index 2662df6..93b7759 100644
--- a/src/gb/gprs_ns2_fr.c
+++ b/src/gb/gprs_ns2_fr.c
@@ -311,10 +311,14 @@
 		switch (errno) {
 		case EAGAIN:
 		case ENOBUFS:
+			/* not a real error, but more a normal event on AF_PACKET */
+			/* don't free the message and let the caller re-enqueue */
 			return -errno;
 		default:
+			/* an actual error, like -ENETDOWN, -EMSGSIZE */
 			LOGBIND(bind, LOGL_ERROR, "error during write to AF_PACKET: %s\n", strerror(errno));
-			return -errno;
+			msgb_free(msg);
+			return 0;
 		}
 	} else {
 		/* short write */