#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;
PDEBUG ("PtlMEUnlink", rc);
case 3:
- kportal_put_ni (nal);
+ PtlNIFini (server->ni);
case 4:
{
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);
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));
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;
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))) {
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))) {
}
- 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);
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,
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() */
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);