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: Matt Porter <mporter@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/greybus/ap.c b/drivers/staging/greybus/ap.c
index c2c5aa6..2a60de0 100644
--- a/drivers/staging/greybus/ap.c
+++ b/drivers/staging/greybus/ap.c
@@ -65,7 +65,15 @@
{
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 @@
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;
}