Commit a598f438 authored by Bryan O'Donoghue's avatar Bryan O'Donoghue Committed by Greg Kroah-Hartman
Browse files

greybus: loopback: make loopback type input equivalent to protocol type



Sepcifying loopback operation type with a type value that is internal to
the loopback driver is non-intunitive and requires reading code to
understand. Remove confusing duplicate definitions and update code to
accept the greybus-specification function identity defintiions as the
appropriate type values for initiating loopback operations.

See greybus-spec section 10.16.1 'Greybus Loopback Message Types' for a
full list of valid messages to set this type field to.

Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 74a240a0
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -45,12 +45,6 @@ struct gb_loopback {
	u32 error;
};

/* Current function (type of traffic generated by the loopback thread) */
#define GB_LOOPBACK_FN_NONE				0x00
#define GB_LOOPBACK_FN_PING				0x01
#define GB_LOOPBACK_FN_XFER				0x02
#define GB_LOOPBACK_FN_COUNT				0x03

#define GB_LOOPBACK_MS_WAIT_MAX				1000
#define GB_LOOPBACK_SIZE_MAX				SZ_4K

@@ -117,10 +111,16 @@ static DEVICE_ATTR_RW(field)
static void gb_loopback_reset_stats(struct gb_loopback *gb);
static void gb_loopback_check_attr(struct gb_loopback *gb)
{
	switch (gb->type) {
	case GB_LOOPBACK_TYPE_PING:
	case GB_LOOPBACK_TYPE_TRANSFER:
		break;
	default:
		gb->type = 0;
		break;
	}
	if (gb->ms_wait > GB_LOOPBACK_MS_WAIT_MAX)
		gb->ms_wait = GB_LOOPBACK_MS_WAIT_MAX;
	if (gb->type >= GB_LOOPBACK_FN_COUNT)
		gb->type = GB_LOOPBACK_FN_NONE;
	if (gb->size > GB_LOOPBACK_SIZE_MAX)
		gb->size = GB_LOOPBACK_SIZE_MAX;
	gb->error = 0;
@@ -337,13 +337,13 @@ static int gb_loopback_fn(void *data)
	struct gb_loopback *gb = (struct gb_loopback *)data;

	while (!kthread_should_stop()) {
		if (gb->type == GB_LOOPBACK_FN_NONE) {
		if (!gb->type) {
			msleep(1000);
			continue;
		}
		if (gb->type == GB_LOOPBACK_FN_PING)
		if (gb->type == GB_LOOPBACK_TYPE_PING)
			error = gb_loopback_ping(gb, &tlat);
		else if (gb->type == GB_LOOPBACK_FN_XFER)
		else if (gb->type == GB_LOOPBACK_TYPE_TRANSFER)
			error = gb_loopback_transfer(gb, &tlat, gb->size);
		if (error)
			gb->error++;