gmnal_stop_ctthread(nal_data);
gmnal_free_txd(nal_data);
gmnal_free_srxd(nal_data);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_close(nal_data->gm_port);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
if (nal_data->sysctl)
unregister_sysctl_table (nal_data->sysctl);
/* Don't free 'nal'; it's a static struct */
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
return(PTL_NO_SPACE);
}
+
memset(libnal, 0, sizeof(lib_nal_t));
+ libnal->libnal_send = gmnal_cb_send;
+ libnal->libnal_send_pages = gmnal_cb_send_pages;
+ libnal->libnal_recv = gmnal_cb_recv;
+ libnal->libnal_recv_pages = gmnal_cb_recv_pages;
+ libnal->libnal_map = NULL;
+ libnal->libnal_unmap = NULL;
+ libnal->libnal_dist = gmnal_cb_dist;
+ libnal->libnal_data = NULL;
+
CDEBUG(D_INFO, "Allocd and reset libnal[%p]\n", libnal);
- GMNAL_INIT_NAL_CB(libnal);
/*
* String them all together
*/
nal_data->nal = nal;
nal_data->libnal = libnal;
- GMNAL_GM_LOCK_INIT(nal_data);
+ spin_lock_init(&nal_data->gm_lock);
/*
CDEBUG(D_NET, "Calling gm_open with port [%d], "
- "name [%s], version [%d]\n", GMNAL_GM_PORT_ID,
+ "name [%s], version [%d]\n", gm_port_id,
"gmnal", GM_API_VERSION);
- GMNAL_GM_LOCK(nal_data);
- gm_status = gm_open(&nal_data->gm_port, 0, GMNAL_GM_PORT_ID, "gmnal",
+ spin_lock(&nal_data->gm_lock);
+ gm_status = gm_open(&nal_data->gm_port, 0, gm_port_id, "gmnal",
GM_API_VERSION);
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
CDEBUG(D_INFO, "gm_open returned [%d]\n", gm_status);
if (gm_status == GM_SUCCESS) {
gm_status);
break;
}
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
if (gmnal_alloc_srxd(nal_data) != GMNAL_STATUS_OK) {
CERROR("Failed to allocate small rx descriptors\n");
gmnal_free_txd(nal_data);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_close(nal_data->gm_port);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
while((srxd = gmnal_get_srxd(nal_data, 0))) {
CDEBUG(D_NET, "giving [%p] to gm_provide_recvive_buffer\n",
srxd->buffer);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_provide_receive_buffer_with_tag(nal_data->gm_port,
srxd->buffer, srxd->gmsize,
GM_LOW_PRIORITY, 0);
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
}
/*
*/
if (gmnal_alloc_txd(nal_data) != GMNAL_STATUS_OK) {
CERROR("Failed to allocate small tx descriptors\n");
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_close(nal_data->gm_port);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
* Initialise the portals library
*/
CDEBUG(D_NET, "Getting node id\n");
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_status = gm_get_node_id(nal_data->gm_port, &local_nid);
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
if (gm_status != GM_SUCCESS) {
gmnal_stop_rxthread(nal_data);
gmnal_stop_ctthread(nal_data);
CERROR("can't determine node id\n");
gmnal_free_txd(nal_data);
gmnal_free_srxd(nal_data);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_close(nal_data->gm_port);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
nal_data->gm_local_nid = local_nid;
CDEBUG(D_INFO, "Local node id is [%u]\n", local_nid);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_status = gm_node_id_to_global_id(nal_data->gm_port, local_nid,
&global_nid);
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
if (gm_status != GM_SUCCESS) {
CERROR("failed to obtain global id\n");
gmnal_stop_rxthread(nal_data);
gmnal_stop_ctthread(nal_data);
gmnal_free_txd(nal_data);
gmnal_free_srxd(nal_data);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_close(nal_data->gm_port);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
gmnal_stop_ctthread(nal_data);
gmnal_free_txd(nal_data);
gmnal_free_srxd(nal_data);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_close(nal_data->gm_port);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
gmnal_stop_ctthread(nal_data);
gmnal_free_txd(nal_data);
gmnal_free_srxd(nal_data);
- GMNAL_GM_LOCK(nal_data);
+ spin_lock(&nal_data->gm_lock);
gm_close(nal_data->gm_port);
gm_finalize();
- GMNAL_GM_UNLOCK(nal_data);
+ spin_unlock(&nal_data->gm_lock);
PORTAL_FREE(nal_data, sizeof(gmnal_data_t));
PORTAL_FREE(libnal, sizeof(lib_nal_t));
return(PTL_FAIL);
{
int rc;
- memset(&the_gm_nal, 0, sizeof(nal_t));
CDEBUG(D_INFO, "reset nal[%p]\n", &the_gm_nal);
- GMNAL_INIT_NAL(&the_gm_nal);
+
+ the_gm_nal = (nal_t) {
+ .nal_ni_init = gmnal_api_startup,
+ .nal_ni_fini = gmnal_api_shutdown,
+ .nal_data = NULL,
+ };
rc = ptl_register_nal(GMNAL, &the_gm_nal);
if (rc != PTL_OK)