- cfs_spinlock_t *tx_q_lock = &kmxlnd_data.kmx_tx_queue_lock;
- cfs_rwlock_t *g_lock = &kmxlnd_data.kmx_global_lock;
-
- cfs_daemonize("mxlnd_tx_queued");
-
- while (!(cfs_atomic_read(&kmxlnd_data.kmx_shutdown))) {
- ret = cfs_down_interruptible(&kmxlnd_data.kmx_tx_queue_sem);
- if (cfs_atomic_read(&kmxlnd_data.kmx_shutdown))
- break;
- if (ret != 0) // Should we check for -EINTR?
- continue;
- cfs_spin_lock(tx_q_lock);
- if (cfs_list_empty (&kmxlnd_data.kmx_tx_queue)) {
- cfs_spin_unlock(tx_q_lock);
- continue;
- }
- tx = cfs_list_entry (queue->next, kmx_ctx_t, mxc_list);
- cfs_list_del_init(&tx->mxc_list);
- cfs_spin_unlock(tx_q_lock);
-
- found = 0;
- peer = mxlnd_find_peer_by_nid(tx->mxc_nid, 0); /* adds peer ref */
- if (peer != NULL) {
- tx->mxc_peer = peer;
- cfs_write_lock(g_lock);
- if (peer->mxp_conn == NULL) {
- ret = mxlnd_conn_alloc_locked(&peer->mxp_conn, peer);
- if (ret != 0) {
- /* out of memory, give up and fail tx */
- tx->mxc_errno = -ENOMEM;
- mxlnd_peer_decref(peer);
- cfs_write_unlock(g_lock);
- mxlnd_put_idle_tx(tx);
- continue;
- }
- }
- tx->mxc_conn = peer->mxp_conn;
- mxlnd_conn_addref(tx->mxc_conn); /* for this tx */
- mxlnd_peer_decref(peer); /* drop peer ref taken above */
- cfs_write_unlock(g_lock);
+ spinlock_t *tx_q_lock = &kmxlnd_data.kmx_tx_queue_lock;
+ rwlock_t *g_lock = &kmxlnd_data.kmx_global_lock;
+
+ while (!(atomic_read(&kmxlnd_data.kmx_shutdown))) {
+ ret = down_interruptible(&kmxlnd_data.kmx_tx_queue_sem);
+ if (atomic_read(&kmxlnd_data.kmx_shutdown))
+ break;
+ if (ret != 0) /* Should we check for -EINTR? */
+ continue;
+ spin_lock(tx_q_lock);
+ if (cfs_list_empty(&kmxlnd_data.kmx_tx_queue)) {
+ spin_unlock(tx_q_lock);
+ continue;
+ }
+ tx = cfs_list_entry(queue->next, kmx_ctx_t, mxc_list);
+ cfs_list_del_init(&tx->mxc_list);
+ spin_unlock(tx_q_lock);
+
+ found = 0;
+ peer = mxlnd_find_peer_by_nid(tx->mxc_nid, 0); /* adds ref*/
+ if (peer != NULL) {
+ tx->mxc_peer = peer;
+ write_lock(g_lock);
+ if (peer->mxp_conn == NULL) {
+ ret = mxlnd_conn_alloc_locked(&peer->mxp_conn,
+ peer);
+ if (ret != 0) {
+ /* out of memory: give up, fail tx */
+ tx->mxc_errno = -ENOMEM;
+ mxlnd_peer_decref(peer);
+ write_unlock(g_lock);
+ mxlnd_put_idle_tx(tx);
+ continue;
+ }
+ }
+ tx->mxc_conn = peer->mxp_conn;
+ mxlnd_conn_addref(tx->mxc_conn); /* for this tx */
+ mxlnd_peer_decref(peer); /* drop peer ref taken above */
+ write_unlock(g_lock);