Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2103d6b8 authored by Denys Vlasenko's avatar Denys Vlasenko Committed by David S. Miller
Browse files

net: sctp: Don't use 64 kilobyte lookup table for four elements



Seemingly innocuous sctp_trans_state_to_prio_map[] array
is way bigger than it looks, since
"[SCTP_UNKNOWN] = 2" expands into "[0xffff] = 2" !

This patch replaces it with switch() statement.

Signed-off-by: default avatarDenys Vlasenko <dvlasenk@redhat.com>
CC: Vlad Yasevich <vyasevich@gmail.com>
CC: Neil Horman <nhorman@tuxdriver.com>
CC: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
CC: linux-sctp@vger.kernel.org
CC: netdev@vger.kernel.org
CC: linux-kernel@vger.kernel.org
Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 06a15f51
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -1208,20 +1208,22 @@ void sctp_assoc_update(struct sctp_association *asoc,
 *   within this document.
 *
 * Our basic strategy is to round-robin transports in priorities
 * according to sctp_state_prio_map[] e.g., if no such
 * according to sctp_trans_score() e.g., if no such
 * transport with state SCTP_ACTIVE exists, round-robin through
 * SCTP_UNKNOWN, etc. You get the picture.
 */
static const u8 sctp_trans_state_to_prio_map[] = {
	[SCTP_ACTIVE]	= 3,	/* best case */
	[SCTP_UNKNOWN]	= 2,
	[SCTP_PF]	= 1,
	[SCTP_INACTIVE] = 0,	/* worst case */
};

static u8 sctp_trans_score(const struct sctp_transport *trans)
{
	return sctp_trans_state_to_prio_map[trans->state];
	switch (trans->state) {
	case SCTP_ACTIVE:
		return 3;	/* best case */
	case SCTP_UNKNOWN:
		return 2;
	case SCTP_PF:
		return 1;
	default: /* case SCTP_INACTIVE */
		return 0;	/* worst case */
	}
}

static struct sctp_transport *sctp_trans_elect_tie(struct sctp_transport *trans1,