9P2010.L handshake: .L protocol negotiation
Sripathi Kodi [Fri, 5 Mar 2010 18:51:04 +0000 (18:51 +0000)]
This patch adds 9P2010.L protocol negotiation with the server

Signed-off-by: Sripathi Kodi <sripathik@in.ibm.com>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>

net/9p/client.c

index 9994676..bde9f3d 100644 (file)
@@ -670,8 +670,25 @@ int p9_client_version(struct p9_client *c)
 
        P9_DPRINTK(P9_DEBUG_9P, ">>> TVERSION msize %d protocol %d\n",
                                                c->msize, c->proto_version);
-       req = p9_client_rpc(c, P9_TVERSION, "ds", c->msize,
-                               p9_is_proto_dotu(c) ? "9P2000.u" : "9P2000");
+
+       switch (c->proto_version) {
+       case p9_proto_2010L:
+               req = p9_client_rpc(c, P9_TVERSION, "ds",
+                                       c->msize, "9P2010.L");
+               break;
+       case p9_proto_2000u:
+               req = p9_client_rpc(c, P9_TVERSION, "ds",
+                                       c->msize, "9P2000.u");
+               break;
+       case p9_proto_legacy:
+               req = p9_client_rpc(c, P9_TVERSION, "ds",
+                                       c->msize, "9P2000");
+               break;
+       default:
+               return -EINVAL;
+               break;
+       }
+
        if (IS_ERR(req))
                return PTR_ERR(req);
 
@@ -683,7 +700,9 @@ int p9_client_version(struct p9_client *c)
        }
 
        P9_DPRINTK(P9_DEBUG_9P, "<<< RVERSION msize %d %s\n", msize, version);
-       if (!strncmp(version, "9P2000.u", 8))
+       if (!strncmp(version, "9P2010.L", 8))
+               c->proto_version = p9_proto_2010L;
+       else if (!strncmp(version, "9P2000.u", 8))
                c->proto_version = p9_proto_2000u;
        else if (!strncmp(version, "9P2000", 6))
                c->proto_version = p9_proto_legacy;