X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Fklnds%2Fo2iblnd%2Fo2iblnd.h;h=59fd3d0f3c23869531faad39fa2e1bdad469b099;hp=db9828986b2b0c17919b88979e87a5fd56d1dcee;hb=cc875104bb81313415167425ce21c562ddf540c9;hpb=1f7e6dd796f7e8e6ca9f55b9c6dc54efb69a5e34 diff --git a/lnet/klnds/o2iblnd/o2iblnd.h b/lnet/klnds/o2iblnd/o2iblnd.h index db982898..59fd3d0 100644 --- a/lnet/klnds/o2iblnd/o2iblnd.h +++ b/lnet/klnds/o2iblnd/o2iblnd.h @@ -125,6 +125,8 @@ typedef struct #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM cfs_sysctl_table_header_t *kib_sysctl; /* sysctl interface */ #endif + int *kib_require_priv_port;/* accept only privileged ports */ + int *kib_use_priv_port; /* use privileged port for active connect */ } kib_tunables_t; extern kib_tunables_t kiblnd_tunables; @@ -142,6 +144,12 @@ extern kib_tunables_t kiblnd_tunables; IBLND_CREDIT_HIGHWATER_V1 : \ *kiblnd_tunables.kib_peercredits_hiw) /* when eagerly to return credits */ +#ifdef HAVE_RDMA_CREATE_ID_4ARG +#define kiblnd_rdma_create_id(cb, dev, ps, qpt) rdma_create_id(cb, dev, ps, qpt) +#else +#define kiblnd_rdma_create_id(cb, dev, ps, qpt) rdma_create_id(cb, dev, ps) +#endif + static inline int kiblnd_concurrent_sends_v1(void) { @@ -187,12 +195,20 @@ kiblnd_concurrent_sends_v1(void) struct kib_hca_dev; +/* o2iblnd can run over aliased interface */ +#ifdef IFALIASZ +#define KIB_IFNAME_SIZE IFALIASZ +#else +#define KIB_IFNAME_SIZE 256 +#endif + typedef struct { cfs_list_t ibd_list; /* chain on kib_devs */ cfs_list_t ibd_fail_list; /* chain on kib_failed_devs */ __u32 ibd_ifip; /* IPoIB interface IP */ - char ibd_ifname[32]; /* IPoIB interface name */ + /** IPoIB interface name */ + char ibd_ifname[KIB_IFNAME_SIZE]; int ibd_nnets; /* # nets extant */ cfs_time_t ibd_next_failover; @@ -219,7 +235,10 @@ typedef struct kib_hca_dev cfs_atomic_t ibh_ref; /* refcount */ } kib_hca_dev_t; -#define IBLND_POOL_DEADLINE 300 /* # of seconds to keep pool alive */ +/** # of seconds to keep pool alive */ +#define IBLND_POOL_DEADLINE 300 +/** # of seconds to retry if allocation failed */ +#define IBLND_POOL_RETRY 1 typedef struct { @@ -554,7 +573,7 @@ typedef struct kib_connvars typedef struct kib_conn { struct kib_peer *ibc_peer; /* owning peer */ - kib_hca_dev_t *ibc_hdev; /* HCA bound on */ + kib_hca_dev_t *ibc_hdev; /* HCA bound on */ cfs_list_t ibc_list; /* stash on peer's conn list */ cfs_list_t ibc_sched_list; /* schedule for attention */ __u16 ibc_version; /* version of connection */ @@ -570,9 +589,14 @@ typedef struct kib_conn int ibc_nrx:16; /* receive buffers owned */ int ibc_scheduled:1; /* scheduled for attention */ int ibc_ready:1; /* CQ callback fired */ - unsigned long ibc_last_send; /* time of last send */ - cfs_list_t ibc_early_rxs; /* rxs completed before ESTABLISHED */ - cfs_list_t ibc_tx_noops; /* IBLND_MSG_NOOPs for IBLND_MSG_VERSION_1 */ + /* time of last send */ + unsigned long ibc_last_send; + /** link chain for kiblnd_check_conns only */ + cfs_list_t ibc_connd_list; + /** rxs completed before ESTABLISHED */ + cfs_list_t ibc_early_rxs; + /** IBLND_MSG_NOOPs for IBLND_MSG_VERSION_1 */ + cfs_list_t ibc_tx_noops; cfs_list_t ibc_tx_queue; /* sends that need a credit */ cfs_list_t ibc_tx_queue_nocred;/* sends that don't need a credit */ cfs_list_t ibc_tx_queue_rsrvd; /* sends that need to reserve an ACK/DONE msg */ @@ -587,7 +611,7 @@ typedef struct kib_conn kib_connvars_t *ibc_connvars; /* in-progress connection state */ } kib_conn_t; -#define IBLND_CONN_INIT 0 /* being intialised */ +#define IBLND_CONN_INIT 0 /* being initialised */ #define IBLND_CONN_ACTIVE_CONNECT 1 /* active sending req */ #define IBLND_CONN_PASSIVE_WAIT 2 /* passive waiting for rtu */ #define IBLND_CONN_ESTABLISHED 3 /* connection established */ @@ -719,7 +743,7 @@ kiblnd_send_keepalive(kib_conn_t *conn) } static inline int -kiblnd_send_noop(kib_conn_t *conn) +kiblnd_need_noop(kib_conn_t *conn) { LASSERT (conn->ibc_state >= IBLND_CONN_ESTABLISHED); @@ -733,11 +757,12 @@ kiblnd_send_noop(kib_conn_t *conn) return 0; /* NOOP can be piggybacked */ /* No tx to piggyback NOOP onto or no credit to send a tx */ - return (cfs_list_empty(&conn->ibc_tx_queue) || conn->ibc_credits == 0); + return (cfs_list_empty(&conn->ibc_tx_queue) || + conn->ibc_credits == 0); } - if (!cfs_list_empty(&conn->ibc_tx_noops) || /* NOOP already queued */ - !cfs_list_empty(&conn->ibc_tx_queue_nocred) || /* can be piggybacked */ + if (!cfs_list_empty(&conn->ibc_tx_noops) || /* NOOP already queued */ + !cfs_list_empty(&conn->ibc_tx_queue_nocred) || /* piggyback NOOP */ conn->ibc_credits == 0) /* no credit */ return 0;