Whamcloud - gitweb
b=2776
[fs/lustre-release.git] / lustre / portals / knals / ibnal / ibnal_cb.c
index 2c07cc4..f359441 100644 (file)
@@ -221,7 +221,19 @@ void kibnal_sti(nal_cb_t *nal, unsigned long *flags)
         spin_unlock_irqrestore(&data->kib_dispatch_lock,*flags);
 }
 
+//
+// A new event has just been created
+//
+void kibnal_callback(nal_cb_t *nal, void *private, lib_eq_t *eq, ptl_event_t *ev)
+{
+        /* holding kib_dispatch_lock */
+
+        if (eq->event_callback != NULL)
+                eq->event_callback(ev);
 
+        /* We will wake theads sleeping in yield() here, AFTER the
+         * callback, when we implement blocking yield */
+}
 
 //
 // nic distance 
@@ -306,7 +318,7 @@ kibnal_send(nal_cb_t        *nal,
           if(buf_length > MAX_MSG_SIZE) { 
              CERROR("kibnal_send:request exceeds Transmit data size (%d).\n",
                       MAX_MSG_SIZE);
-             rc = -1;
+             rc = PTL_FAIL;
              return rc;
           }
           else {
@@ -363,7 +375,7 @@ kibnal_send(nal_cb_t        *nal,
 
         PROF_FINISH(kibnal_send); // time stapm of send operation 
 
-        rc = 1;
+        rc = PTL_OK;
 
         return rc; 
 }
@@ -386,7 +398,7 @@ int kibnal_send_pages(nal_cb_t * nal,
                       ptl_kiov_t *iov, 
                       size_t mlen)
 {
-   int rc = 1;
+   int rc = PTL_FAIL;
 
    CDEBUG(D_NET, "kibnal_send_pages\n");
 
@@ -420,7 +432,7 @@ void kibnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd)
 //
 // do you need this 
 //
-int kibnal_callback(nal_cb_t * nal, 
+void kibnal_callback(nal_cb_t * nal, 
                            void *private, 
                            lib_eq_t *eq,
                            ptl_event_t *ev)
@@ -507,7 +519,7 @@ kibnal_recv_pages(nal_cb_t * nal,
 {
 
   CDEBUG(D_NET, "recv_pages not implemented\n");
-  return PTL_OK;
+  return PTL_FAIL;
        
 }
 
@@ -526,11 +538,12 @@ kibnal_recv(nal_cb_t     *nal,
         CDEBUG(D_NET,"kibnal_recv: mlen=%d, rlen=%d\n", mlen, rlen);
 
         /* What was actually received must be >= what sender claims to
-         * have sent.  This is an LASSERT, since lib-move doesn't
-         * check cb return code yet. */
-        LASSERT (krx->krx_len >= sizeof (ptl_hdr_t) + rlen);
+         * have sent. */
         LASSERT (mlen <= rlen);
 
+        if (krx->krx_len < sizeof (ptl_hdr_t) + rlen)
+                return (PTL_FAIL);
+
         PROF_START(kibnal_recv);
 
         if(mlen != 0) {
@@ -542,12 +555,12 @@ kibnal_recv(nal_cb_t     *nal,
 
         PROF_START(lib_finalize);
         
-        lib_finalize(nal, private, cookie);
+        lib_finalize(nal, private, cookie, PTL_OK);
         
         PROF_FINISH(lib_finalize);
         PROF_FINISH(kibnal_recv);
 
-        return rlen;
+        return PTL_OK;
 }
 
 //
@@ -1284,5 +1297,6 @@ nal_cb_t kibnal_lib = {
         cb_printf:      kibnal_printf,
         cb_cli:         kibnal_cli,
         cb_sti:         kibnal_sti,
+        cb_callback:    kibnal_callback,
         cb_dist:        kibnal_dist // no used at this moment 
 };