Commit e94e1714 authored by Matt Porter's avatar Matt Porter Committed by Greg Kroah-Hartman

greybus: move versioning from svc message header to handshake function

The Greybus spec has been updated to improve the efficiency of the
version major/minor information that had been previously carried in
every SVC message header. The version major/minor is now provided
as part of the handshake function.

Update the SVC msg header and handshake function payload definitions
and move the version major/minor validation into the SVC handshake
handling routine.
Signed-off-by: default avatarMatt Porter <mporter@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent 710ecb06
......@@ -65,7 +65,15 @@ static void svc_handshake(struct svc_function_handshake *handshake,
{
struct svc_msg *svc_msg;
/* A new SVC communication channel, let's verify it was for us */
/* A new SVC communication channel, let's verify a supported version */
if ((handshake->version_major != GREYBUS_VERSION_MAJOR) &&
(handshake->version_minor != GREYBUS_VERSION_MINOR)) {
dev_dbg(hd->parent, "received invalid greybus version %d:%d\n",
handshake->version_major, handshake->version_minor);
return;
}
/* Validate that the handshake came from the SVC */
if (handshake->handshake_type != SVC_HANDSHAKE_SVC_HELLO) {
/* we don't know what to do with this, log it and return */
dev_dbg(hd->parent, "received invalid handshake type %d\n",
......@@ -162,11 +170,6 @@ static struct svc_msg *convert_ap_message(struct ap_msg *ap_msg)
svc_msg = (struct svc_msg *)ap_msg->data;
/* Verify the version is something we can handle with this code */
if ((svc_msg->header.version_major != GREYBUS_VERSION_MAJOR) &&
(svc_msg->header.version_minor != GREYBUS_VERSION_MINOR))
return NULL;
return svc_msg;
}
......
......@@ -30,8 +30,6 @@ enum svc_msg_type {
struct svc_msg_header {
__u8 function_id; /* enum svc_function_id */
__u8 message_type;
__u8 version_major;
__u8 version_minor;
__le16 payload_length;
};
......@@ -42,6 +40,8 @@ enum svc_function_handshake_type {
};
struct svc_function_handshake {
__u8 version_major;
__u8 version_minor;
__u8 handshake_type; /* enum svc_function_handshake_type */
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment