/* 2 = LNet msg + Transfer chain */
#define IBLND_CQ_ENTRIES(c) \
- (IBLND_RECV_WRS(c) + 2 * kiblnd_concurrent_sends(c->ibc_version, \
- c->ibc_peer->ibp_ni))
+ (IBLND_RECV_WRS(c) + 2 * c->ibc_queue_depth)
struct kib_hca_dev;
int kiblnd_msg_queue_size(int version, struct lnet_ni *ni);
-static inline int
-kiblnd_concurrent_sends(int version, struct lnet_ni *ni)
-{
- struct lnet_ioctl_config_o2iblnd_tunables *tunables;
- int concurrent_sends;
-
- tunables = &ni->ni_lnd_tunables.lnd_tun_u.lnd_o2ib;
- concurrent_sends = tunables->lnd_concurrent_sends;
-
- if (version == IBLND_MSG_VERSION_1) {
- if (concurrent_sends > IBLND_MSG_QUEUE_SIZE_V1 * 2)
- return IBLND_MSG_QUEUE_SIZE_V1 * 2;
-
- if (concurrent_sends < IBLND_MSG_QUEUE_SIZE_V1 / 2)
- return IBLND_MSG_QUEUE_SIZE_V1 / 2;
- }
-
- return concurrent_sends;
-}
-
static inline void
kiblnd_hdev_addref_locked(kib_hca_dev_t *hdev)
{
{
kib_msg_t *msg = tx->tx_msg;
kib_peer_ni_t *peer_ni = conn->ibc_peer;
- struct lnet_ni *ni = peer_ni->ibp_ni;
int ver = conn->ibc_version;
int rc;
int done;
LASSERT(conn->ibc_outstanding_credits <= conn->ibc_queue_depth);
LASSERT(conn->ibc_credits >= 0);
LASSERT(conn->ibc_credits <= conn->ibc_queue_depth);
-
- if (conn->ibc_nsends_posted ==
- kiblnd_concurrent_sends(ver, ni)) {
- /* tx completions outstanding... */
- CDEBUG(D_NET, "%s: posted enough\n",
- libcfs_nid2str(peer_ni->ibp_nid));
- return -EAGAIN;
- }
+ LASSERT(conn->ibc_nsends_posted <= conn->ibc_queue_depth);
if (credit != 0 && conn->ibc_credits == 0) { /* no credits */
CDEBUG(D_NET, "%s: no credits\n",
}
LASSERT(conn->ibc_nsends_posted <=
- kiblnd_concurrent_sends(ver, ni));
+ conn->ibc_queue_depth);
LASSERT (!IBLND_OOB_CAPABLE(ver) ||
conn->ibc_noops_posted <= IBLND_OOB_MSGS(ver));
LASSERT (conn->ibc_reserved_credits >= 0);
static int concurrent_sends;
module_param(concurrent_sends, int, 0444);
-MODULE_PARM_DESC(concurrent_sends, "send work-queue sizing");
+MODULE_PARM_DESC(concurrent_sends, "send work-queue sizing (obsolete)");
/*
* map_on_demand is a flag used to determine if we can use FMR or FastReg.
if (tunables->lnd_peercredits_hiw >= net_tunables->lct_peer_tx_credits)
tunables->lnd_peercredits_hiw = net_tunables->lct_peer_tx_credits - 1;
- if (tunables->lnd_concurrent_sends == 0)
- tunables->lnd_concurrent_sends = net_tunables->lct_peer_tx_credits;
-
- if (tunables->lnd_concurrent_sends > net_tunables->lct_peer_tx_credits * 2)
- tunables->lnd_concurrent_sends = net_tunables->lct_peer_tx_credits * 2;
-
- if (tunables->lnd_concurrent_sends < net_tunables->lct_peer_tx_credits / 2)
- tunables->lnd_concurrent_sends = net_tunables->lct_peer_tx_credits / 2;
-
- if (tunables->lnd_concurrent_sends < net_tunables->lct_peer_tx_credits) {
- CWARN("Concurrent sends %d is lower than message "
- "queue size: %d, performance may drop slightly.\n",
- tunables->lnd_concurrent_sends,
- net_tunables->lct_peer_tx_credits);
- }
-
if (!tunables->lnd_fmr_pool_size)
tunables->lnd_fmr_pool_size = fmr_pool_size;
if (!tunables->lnd_fmr_flush_trigger)
default_tunables.lnd_version = CURRENT_LND_VERSION;
default_tunables.lnd_peercredits_hiw = peer_credits_hiw;
default_tunables.lnd_map_on_demand = map_on_demand;
- default_tunables.lnd_concurrent_sends = concurrent_sends;
default_tunables.lnd_fmr_pool_size = fmr_pool_size;
default_tunables.lnd_fmr_flush_trigger = fmr_flush_trigger;
default_tunables.lnd_fmr_cache = fmr_cache;
# Lustre is first mounted.
alias ko2iblnd-opa ko2iblnd
-options ko2iblnd-opa peer_credits=128 peer_credits_hiw=64 credits=1024 concurrent_sends=256 ntx=2048 map_on_demand=256 fmr_pool_size=2048 fmr_flush_trigger=512 fmr_cache=1 conns_per_peer=4
+options ko2iblnd-opa peer_credits=128 peer_credits_hiw=64 credits=1024 ntx=2048 map_on_demand=256 fmr_pool_size=2048 fmr_flush_trigger=512 fmr_cache=1 conns_per_peer=4
install ko2iblnd /usr/sbin/ko2iblnd-probe