-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
ksocknal_ctl_table[i].ctl_name = j++;
ksocknal_ctl_table[i].procname = "peer_credits";
- ksocknal_ctl_table[i].data = ksocknal_tunables.ksnd_peercredits;
+ ksocknal_ctl_table[i].data = ksocknal_tunables.ksnd_peertxcredits;
+ ksocknal_ctl_table[i].maxlen = sizeof (int);
+ ksocknal_ctl_table[i].mode = 0444;
+ ksocknal_ctl_table[i].proc_handler = &proc_dointvec;
+ i++;
+
+ ksocknal_ctl_table[i].ctl_name = j++;
+ ksocknal_ctl_table[i].procname = "peer_buffer_credits";
+ ksocknal_ctl_table[i].data = ksocknal_tunables.ksnd_peerrtrcredits;
ksocknal_ctl_table[i].maxlen = sizeof (int);
ksocknal_ctl_table[i].mode = 0444;
ksocknal_ctl_table[i].proc_handler = &proc_dointvec;
ksocknal_ctl_table[i].ctl_name = j++;
ksocknal_ctl_table[i].procname = "zero_copy";
- ksocknal_ctl_table[i].data = ksocknal_tunables.ksnd_zc_min_frag;
+ ksocknal_ctl_table[i].data = ksocknal_tunables.ksnd_zc_min_payload;
ksocknal_ctl_table[i].maxlen = sizeof (int);
ksocknal_ctl_table[i].mode = 0644;
ksocknal_ctl_table[i].proc_handler = &proc_dointvec;
ksocknal_ctl_table[i].proc_handler = &proc_dointvec;
i++;
+ ksocknal_ctl_table[i].ctl_name = j++;
+ ksocknal_ctl_table[i].procname = "round_robin";
+ ksocknal_ctl_table[i].data = ksocknal_tunables.ksnd_round_robin;
+ ksocknal_ctl_table[i].maxlen = sizeof(int);
+ ksocknal_ctl_table[i].mode = 0644;
+ ksocknal_ctl_table[i].proc_handler = &proc_dointvec;
+ i++;
+
#ifdef CPU_AFFINITY
ksocknal_ctl_table[i].ctl_name = j++;
ksocknal_ctl_table[i].procname = "irq_affinity";
ksocknal_lib_csum_tx(tx);
nob = ks_query_iovs_length(tx->tx_iov, tx->tx_niov);
- flags = (!list_empty (&conn->ksnc_tx_queue) || nob < tx->tx_resid) ?
+ flags = (!cfs_list_empty (&conn->ksnc_tx_queue) || nob < tx->tx_resid) ?
(MSG_DONTWAIT | MSG_MORE) : MSG_DONTWAIT;
rc = ks_send_iovs(sock, tx->tx_iov, tx->tx_niov, flags, 0);
nkiov = tx->tx_nkiov;
nob = ks_query_kiovs_length(tx->tx_kiov, nkiov);
- flags = (!list_empty (&conn->ksnc_tx_queue) || nob < tx->tx_resid) ?
+ flags = (!cfs_list_empty (&conn->ksnc_tx_queue) || nob < tx->tx_resid) ?
(MSG_DONTWAIT | MSG_MORE) : MSG_DONTWAIT;
rc = ks_send_kiovs(sock, tx->tx_kiov, nkiov, flags, 0);
ks_get_tconn(tconn);
- spin_lock(&tconn->kstc_lock);
+ spin_lock(&tconn->kstc_lock);
if (tconn->kstc_type == kstt_sender) {
nagle = tconn->sender.kstc_info.nagle;
tconn->sender.kstc_info.nagle = 0;
tconn->child.kstc_info.nagle = 0;
}
- spin_unlock(&tconn->kstc_lock);
+ spin_unlock(&tconn->kstc_lock);
val = 1;
rc = ks_set_tcp_option(
);
LASSERT (rc == 0);
- spin_lock(&tconn->kstc_lock);
-
- if (tconn->kstc_type == kstt_sender) {
- tconn->sender.kstc_info.nagle = nagle;
- } else {
- LASSERT(tconn->kstc_type == kstt_child);
- tconn->child.kstc_info.nagle = nagle;
- }
- spin_unlock(&tconn->kstc_lock);
+ spin_lock(&tconn->kstc_lock);
+
+ if (tconn->kstc_type == kstt_sender) {
+ tconn->sender.kstc_info.nagle = nagle;
+ } else {
+ LASSERT(tconn->kstc_type == kstt_child);
+ tconn->child.kstc_info.nagle = nagle;
+ }
+ spin_unlock(&tconn->kstc_lock);
ks_put_tconn(tconn);
}
{
ksock_conn_t * conn = (ksock_conn_t *) sock->kstc_conn;
- read_lock (&ksocknal_data.ksnd_global_lock);
+ read_lock(&ksocknal_data.ksnd_global_lock);
if (mode) {
ksocknal_write_callback(conn);
} else {
ksocknal_read_callback(conn);
}
- read_unlock (&ksocknal_data.ksnd_global_lock);
+ read_unlock(&ksocknal_data.ksnd_global_lock);
}
void
ksocknal_tx_fini_callback(ksock_conn_t * conn, ksock_tx_t * tx)
{
- /* remove tx/conn from conn's outgoing queue */
- spin_lock_bh (&conn->ksnc_scheduler->kss_lock);
- list_del(&tx->tx_list);
- if (list_empty(&conn->ksnc_tx_queue)) {
- list_del (&conn->ksnc_tx_list);
- }
- spin_unlock_bh (&conn->ksnc_scheduler->kss_lock);
+ /* remove tx/conn from conn's outgoing queue */
+ spin_lock_bh(&conn->ksnc_scheduler->kss_lock);
+ cfs_list_del(&tx->tx_list);
+ if (cfs_list_empty(&conn->ksnc_tx_queue))
+ cfs_list_del(&conn->ksnc_tx_list);
+
+ spin_unlock_bh(&conn->ksnc_scheduler->kss_lock);
- /* complete send; tx -ref */
- ksocknal_tx_decref (tx);
+ /* complete send; tx -ref */
+ ksocknal_tx_decref(tx);
}
void
}
int
-ksocknal_lib_zc_capable(struct socket *sock)
+ksocknal_lib_zc_capable(ksock_conn_t *conn)
+{
+ return 0;
+}
+
+int
+ksocknal_lib_memory_pressure(ksock_conn_t *conn)
+{
+ return 0;
+}
+
+int
+ksocknal_lib_bind_thread_to_cpu(int id)
{
return 0;
}