Whamcloud - gitweb
- ptlrpc_ping_interpret is needless:
[fs/lustre-release.git] / lnet / tests / ping_srv.c
index 1037d09..ae0d722 100644 (file)
 
 #define DEBUG_SUBSYSTEM S_PINGER
 
-#include <linux/kp30.h>
+#include <libcfs/kp30.h>
 #include <portals/p30.h>
 #include "ping.h"
 
-#include <linux/module.h>
-#include <linux/proc_fs.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/version.h>
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-#include <linux/workqueue.h>
-#else
-#include <linux/tqueue.h>
-#endif
-#include <linux/wait.h>
-#include <linux/smp_lock.h>
-
-#include <asm/unistd.h>
-#include <asm/semaphore.h>
-
 #define STDSIZE (sizeof(int) + sizeof(int) + sizeof(struct timeval))
-#define MAXSIZE (16*1024*1024)
+#define MAXSIZE (16*1024)
 
 static unsigned ping_head_magic;
 static unsigned ping_bulk_magic;
-static int nal  = 0;                            // Your NAL,
+static int nal  = SOCKNAL;                            // Your NAL,
 static unsigned long packets_valid = 0;         // Valid packets 
 static int running = 1;
 atomic_t pkt;
@@ -81,7 +64,7 @@ static void *pingsrv_shutdown(int err)
                                         PDEBUG ("PtlMEUnlink", rc);
 
                 case 3:
-                        kportal_put_ni (nal);
+                        PtlNIFini (server->ni);
 
                 case 4:
                         
@@ -104,10 +87,10 @@ int pingsrv_thread(void *arg)
 {
         int rc;
         unsigned long magic;
-        unsigned long ping_bulk_magic = 0xcafebabe;
+        unsigned long ping_bulk_magic = __cpu_to_le32(0xcafebabe);
         
         kportal_daemonize ("pingsrv");
-        server->tsk =  current;
+        server->tsk =  cfs_current();
         
         while (running) {
                 set_current_state (TASK_INTERRUPTIBLE);
@@ -116,12 +99,12 @@ int pingsrv_thread(void *arg)
                         continue;
                 }
                
-                magic =  *((int *)(server->evnt.mem_desc.start 
-                                        + server->evnt.offset));
+                magic =  __le32_to_cpu(*((int *)(server->evnt.md.start 
+                                        + server->evnt.offset)));
                 
                 
                 if(magic != 0xdeadbeef) {
-                        printk("Unexpected Packet to the server\n");
+                        CERROR("Unexpected Packet to the server, magic: %lx %d\n", magic, server->evnt.offset);
                         
                 } 
                 memcpy (server->in_buf, &ping_bulk_magic, sizeof(ping_bulk_magic));
@@ -129,13 +112,13 @@ int pingsrv_thread(void *arg)
                 server->mdout.length    = server->evnt.rlength;
                 server->mdout.start     = server->in_buf;
                 server->mdout.threshold = 1; 
-                server->mdout.options   = PTL_MD_OP_PUT;
+                server->mdout.options   = PTL_MD_EVENT_START_DISABLE | PTL_MD_OP_PUT;
                 server->mdout.user_ptr  = NULL;
-                server->mdout.eventq    = PTL_EQ_NONE;
+                server->mdout.eq_handle = PTL_EQ_NONE;
        
                 /* Bind the outgoing buffer */
                 if ((rc = PtlMDBind (server->ni, server->mdout, 
-                                                &server->mdout_h))) {
+                                     PTL_UNLINK, &server->mdout_h))) {
                          PDEBUG ("PtlMDBind", rc);
                          pingsrv_shutdown (1);
                          return 1;
@@ -145,9 +128,9 @@ int pingsrv_thread(void *arg)
                 server->mdin.start     = server->in_buf;
                 server->mdin.length    = MAXSIZE;
                 server->mdin.threshold = 1; 
-                server->mdin.options   = PTL_MD_OP_PUT;
+                server->mdin.options   = PTL_MD_EVENT_START_DISABLE | PTL_MD_OP_PUT;
                 server->mdin.user_ptr  = NULL;
-                server->mdin.eventq    = server->eq;
+                server->mdin.eq_handle = server->eq;
         
                 if ((rc = PtlMDAttach (server->me, server->mdin,
                         PTL_UNLINK, &server->mdin_h))) {
@@ -167,49 +150,49 @@ int pingsrv_thread(void *arg)
         return 0;    
 }
 
-static int pingsrv_packet(ptl_event_t *ev)
+static void pingsrv_packet(ptl_event_t *ev)
 {
         atomic_inc (&pkt);
         wake_up_process (server->tsk);
-        return 1;
 } /* pingsrv_head() */
 
-static int pingsrv_callback(ptl_event_t *ev)
+static void pingsrv_callback(ptl_event_t *ev)
 {
         
         if (ev == NULL) {
                 CERROR ("null in callback, ev=%p\n", ev);
-                return 0;
+                return;
         }
         server->evnt = *ev;
         
-        printk ("received ping from nid "LPX64" "
+        CWARN ("received ping from nid "LPX64" "
                "(off=%u rlen=%u mlen=%u head=%x seq=%d size=%d)\n",
                ev->initiator.nid, ev->offset, ev->rlength, ev->mlength,
-               *((int *)(ev->mem_desc.start + ev->offset)),
-               *((int *)(ev->mem_desc.start + ev->offset + sizeof(unsigned))),
-               *((int *)(ev->mem_desc.start + ev->offset + 2 * 
-                               sizeof(unsigned))));
+               __le32_to_cpu(*((int *)(ev->md.start + ev->offset))),
+               __le32_to_cpu(*((int *)(ev->md.start + ev->offset + sizeof(unsigned)))),
+               __le32_to_cpu(*((int *)(ev->md.start + ev->offset + 2 * 
+                               sizeof(unsigned)))));
         
         packets_valid++;
 
-        return pingsrv_packet(ev);
+        pingsrv_packet(ev);
         
 } /* pingsrv_callback() */
 
 
 static struct pingsrv_data *pingsrv_setup(void)
 {
-        ptl_handle_ni_t *nip;
         int rc;
 
+        server->ni = PTL_INVALID_HANDLE;
+
        /* Aquire and initialize the proper nal for portals. */
-        if ((nip = kportal_get_ni (nal)) == NULL) {
-                CDEBUG (D_OTHER, "NAL %d not loaded\n", nal);
+        rc = PtlNIInit(nal, 0, NULL, NULL, &server->ni);
+        if (!(rc == PTL_OK || rc == PTL_IFACE_DUP)) {
+                CDEBUG (D_OTHER, "NAL %x not loaded\n", nal);
                 return pingsrv_shutdown (4);
         }
 
-        server->ni= *nip;
 
         /* Based on the initialization aquire our unique portal ID. */
         if ((rc = PtlGetId (server->ni, &server->my_id))) {
@@ -229,7 +212,7 @@ static struct pingsrv_data *pingsrv_setup(void)
         }
 
 
-        if ((rc = PtlEQAlloc (server->ni, 1024, pingsrv_callback,
+        if ((rc = PtlEQAlloc (server->ni, 1024, &pingsrv_callback,
                                         &server->eq))) {
                 PDEBUG ("PtlEQAlloc (callback)", rc);
                 return pingsrv_shutdown (2);
@@ -245,9 +228,9 @@ static struct pingsrv_data *pingsrv_setup(void)
         server->mdin.start     = server->in_buf;
         server->mdin.length    = MAXSIZE;
         server->mdin.threshold = 1; 
-        server->mdin.options   = PTL_MD_OP_PUT;
+        server->mdin.options   = PTL_MD_EVENT_START_DISABLE | PTL_MD_OP_PUT;
         server->mdin.user_ptr  = NULL;
-        server->mdin.eventq    = server->eq;
+        server->mdin.eq_handle = server->eq;
         memset (server->in_buf, 0, STDSIZE);
         
         if ((rc = PtlMDAttach (server->me, server->mdin,
@@ -260,37 +243,35 @@ static struct pingsrv_data *pingsrv_setup(void)
         return server; 
 } /* pingsrv_setup() */
 
-static int pingsrv_start(void)
+static int pingsrv_start(void) 
 {
         /* Setup our server */
         if (!pingsrv_setup()) {
                 CDEBUG (D_OTHER, "pingsrv_setup() failed, server stopped\n");
                 return -ENOMEM;
         }
-        kernel_thread (pingsrv_thread,NULL,0);
+        cfs_kernel_thread (pingsrv_thread,NULL,0);
         return 0;
 } /* pingsrv_start() */
 
-
-
 static int __init pingsrv_init(void)
 {
-        ping_head_magic = PING_HEADER_MAGIC;
-        ping_bulk_magic = PING_BULK_MAGIC;
+        ping_head_magic = __cpu_to_le32(PING_HEADER_MAGIC);
+        ping_bulk_magic = __cpu_to_le32(PING_BULK_MAGIC);
         PORTAL_ALLOC (server, sizeof(struct pingsrv_data));  
+        atomic_set(&pkt, 0);
         return pingsrv_start ();
 } /* pingsrv_init() */
 
-
-static void __exit pingsrv_cleanup(void)
+static void /*__exit*/ pingsrv_cleanup(void)
 {
-        remove_proc_entry ("net/pingsrv", NULL);
+        cfs_remove_proc_entry ("net/pingsrv", NULL);
         
         running = 0;
         wake_up_process (server->tsk);
         while (running != 1) {
                 set_current_state (TASK_UNINTERRUPTIBLE);
-                schedule_timeout (HZ);
+                schedule_timeout (cfs_time_seconds(1));
         }
         
 } /* pingsrv_cleanup() */
@@ -298,11 +279,10 @@ static void __exit pingsrv_cleanup(void)
 
 MODULE_PARM(nal, "i");
 MODULE_PARM_DESC(nal, "Use the specified NAL "
-                "(6-kscimacnal, 4-toenal, 2-ksocknal, 1-kqswnal)");
+                "(2-ksocknal, 1-kqswnal)");
  
 MODULE_AUTHOR("Brian Behlendorf (LLNL)");
 MODULE_DESCRIPTION("A kernel space ping server for portals testing");
 MODULE_LICENSE("GPL");
 
-module_init(pingsrv_init);
-module_exit(pingsrv_cleanup);
+cfs_module(ping_srv, "1.0.0", pingsrv_init, pingsrv_cleanup);