From: Ajaykumar Hotchandani Date: Thu, 2 Apr 2015 21:35:07 +0000 (-0700) Subject: rds: disable APM support X-Git-Tag: v4.1.12-92~319^2^2~2^2~2 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=f96850e3e3db30f29b6ced7e54e6a5d825aaf1ea;p=users%2Fjedix%2Flinux-maple.git rds: disable APM support The APM(Alternate Path Migration) feature is not used and its code is being disabled. (It can be re-enabled if/when APM support is enabled in rdma_cm. Signed-off-by: Ajaykumar Hotchandani --- diff --git a/net/rds/ib.c b/net/rds/ib.c index dbc4f5ea9107b..9822c8ac34464 100644 --- a/net/rds/ib.c +++ b/net/rds/ib.c @@ -51,11 +51,15 @@ unsigned int rds_ib_fmr_1m_pool_size = RDS_FMR_1M_POOL_SIZE; unsigned int rds_ib_fmr_8k_pool_size = RDS_FMR_8K_POOL_SIZE; unsigned int rds_ib_retry_count = RDS_IB_DEFAULT_RETRY_COUNT; +#if RDMA_RDS_APM_SUPPORTED unsigned int rds_ib_apm_enabled = 0; unsigned int rds_ib_apm_fallback = 1; +#endif unsigned int rds_ib_haip_enabled = 0; unsigned int rds_ib_haip_fallback = 1; +#if RDMA_RDS_APM_SUPPORTED unsigned int rds_ib_apm_timeout = RDS_IB_DEFAULT_TIMEOUT; +#endif unsigned int rds_ib_rnr_retry_count = RDS_IB_DEFAULT_RNR_RETRY_COUNT; #if IB_RDS_CQ_VECTOR_SUPPORTED unsigned int rds_ib_cq_balance_enabled = 1; @@ -68,16 +72,22 @@ module_param(rds_ib_fmr_8k_pool_size, int, 0444); MODULE_PARM_DESC(rds_ib_fmr_8k_pool_size, " Max number of 8k fmr per HCA"); module_param(rds_ib_retry_count, int, 0444); MODULE_PARM_DESC(rds_ib_retry_count, " Number of hw retries before reporting an error"); +#if RDMA_RDS_APM_SUPPORTED module_param(rds_ib_apm_enabled, int, 0444); MODULE_PARM_DESC(rds_ib_apm_enabled, " APM Enabled"); +#endif module_param(rds_ib_haip_enabled, int, 0444); MODULE_PARM_DESC(rds_ib_haip_enabled, " High Availability IP enabled"); +#if RDMA_RDS_APM_SUPPORTED module_param(rds_ib_apm_timeout, int, 0444); MODULE_PARM_DESC(rds_ib_apm_timeout, " APM timeout"); +#endif module_param(rds_ib_rnr_retry_count, int, 0444); MODULE_PARM_DESC(rds_ib_rnr_retry_count, " QP rnr retry count"); +#if RDMA_RDS_APM_SUPPORTED module_param(rds_ib_apm_fallback, int, 0444); MODULE_PARM_DESC(rds_ib_apm_fallback, " APM failback enabled"); +#endif module_param(rds_ib_haip_fallback, int, 0444); MODULE_PARM_DESC(rds_ib_haip_fallback, " HAIP failback Enabled"); module_param(rds_ib_haip_failover_groups, charp, 0444); @@ -1353,7 +1363,9 @@ struct rds_transport rds_ib_transport = { .sync_mr = rds_ib_sync_mr, .free_mr = rds_ib_free_mr, .flush_mrs = rds_ib_flush_mrs, +#if RDMA_RDS_APM_SUPPORTED .check_migration = rds_ib_check_migration, +#endif .t_owner = THIS_MODULE, .t_name = "infiniband", .t_type = RDS_TRANS_IB diff --git a/net/rds/ib.h b/net/rds/ib.h index 816db3e3153f5..6e939b3d14015 100644 --- a/net/rds/ib.h +++ b/net/rds/ib.h @@ -425,12 +425,16 @@ extern unsigned int rds_ib_fmr_1m_pool_size; extern unsigned int rds_ib_fmr_8k_pool_size; extern unsigned int rds_ib_retry_count; extern unsigned int rds_ib_rnr_retry_count; +#if RDMA_RDS_APM_SUPPORTED extern unsigned int rds_ib_apm_enabled; extern unsigned int rds_ib_apm_fallback; +#endif extern unsigned int rds_ib_haip_enabled; extern unsigned int rds_ib_haip_fallback; extern unsigned int rds_ib_haip_failover_enabled; +#if RDMA_RDS_APM_SUPPORTED extern unsigned int rds_ib_apm_timeout; +#endif #if IB_RDS_CQ_VECTOR_SUPPORTED extern unsigned int rds_ib_cq_balance_enabled; #endif @@ -454,9 +458,10 @@ int rds_ib_cm_handle_connect(struct rdma_cm_id *cm_id, int rds_ib_cm_initiate_connect(struct rdma_cm_id *cm_id); void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_event *event); +#if RDMA_RDS_APM_SUPPORTED void rds_ib_check_migration(struct rds_connection *conn, struct rdma_cm_event *event); - +#endif #define rds_ib_conn_error(conn, fmt...) \ __rds_ib_conn_error(conn, KERN_WARNING "RDS/IB: " fmt) diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c index 8a805b5c72ca3..ef88af4c4ae51 100644 --- a/net/rds/ib_cm.c +++ b/net/rds/ib_cm.c @@ -216,6 +216,7 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even if (dp && dp->dp_ack_seq) rds_send_drop_acked(conn, be64_to_cpu(dp->dp_ack_seq), NULL); +#if RDMA_RDS_APM_SUPPORTED if (rds_ib_apm_enabled && !ic->conn->c_reconnect) { memcpy(&ic->i_pri_path.p_sgid, &ic->i_cm_id->route.path_rec[0].sgid, @@ -242,6 +243,7 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even RDS_IB_GID_ARG(ic->i_pri_path.p_sgid), RDS_IB_GID_ARG(ic->i_pri_path.p_dgid)); } +#endif rds_connect_complete(conn); } @@ -806,18 +808,21 @@ int rds_ib_cm_handle_connect(struct rdma_cm_id *cm_id, event->param.conn.responder_resources, event->param.conn.initiator_depth); +#if RDMA_RDS_APM_SUPPORTED if (rds_ib_apm_enabled) rdma_set_timeout(cm_id, rds_ib_apm_timeout); - +#endif /* rdma_accept() calls rdma_reject() internally if it fails */ err = rdma_accept(cm_id, &conn_param); if (err) rds_ib_conn_error(conn, "rdma_accept failed (%d)\n", err); +#if RDMA_RDS_APM_SUPPORTED else if (rds_ib_apm_enabled && !conn->c_loopback) { err = rdma_enable_apm(cm_id, RDMA_ALT_PATH_BEST); if (err) printk(KERN_WARNING "RDS/IB: APM couldn't be enabled for passive side: %d\n", err); } +#endif out: if (conn) @@ -836,11 +841,13 @@ int rds_ib_cm_initiate_connect(struct rdma_cm_id *cm_id) struct rds_ib_connect_private dp; int ret; +#if RDMA_RDS_APM_SUPPORTED if (rds_ib_apm_enabled && !conn->c_loopback) { ret = rdma_enable_apm(cm_id, RDMA_ALT_PATH_BEST); if (ret) printk(KERN_WARNING "RDS/IB: APM couldn't be enabled for active side: %d\n", ret); } +#endif /* If the peer doesn't do protocol negotiation, we must * default to RDSv3.0 */ @@ -883,8 +890,10 @@ static void rds_ib_migrate(struct work_struct *_work) struct rdma_cm_id *cm_id = ic->i_cm_id; int ret = 0; +#if RDMA_RDS_APM_SUPPORTED if (!rds_ib_apm_fallback) return; +#endif if (!ic->i_active_side) { ret = ib_query_qp(cm_id->qp, &qp_attr, IB_QP_PATH_MIG_STATE, @@ -913,6 +922,7 @@ static void rds_ib_migrate(struct work_struct *_work) } } +#if RDMA_RDS_APM_SUPPORTED void rds_ib_check_migration(struct rds_connection *conn, struct rdma_cm_event *event) { @@ -967,6 +977,7 @@ void rds_ib_check_migration(struct rds_connection *conn, } } } +#endif static void rds_ib_destroy_id(struct work_struct *_work) { diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c index b070a9cab195f..53a0300023ece 100644 --- a/net/rds/rdma_transport.c +++ b/net/rds/rdma_transport.c @@ -86,8 +86,10 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id, case RDMA_CM_EVENT_ADDR_RESOLVED: rdma_set_service_type(cm_id, conn->c_tos); +#if RDMA_RDS_APM_SUPPORTED if (rds_ib_apm_enabled) rdma_set_timeout(cm_id, rds_ib_apm_timeout); +#endif /* XXX do we need to clean up if this fails? */ ret = rdma_resolve_route(cm_id, @@ -115,6 +117,7 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id, ret = trans->cm_initiate_connect(cm_id); break; +#if RDMA_RDS_APM_SUPPORTED case RDMA_CM_EVENT_ALT_PATH_LOADED: rdsdebug("RDS: alt path loaded\n"); if (conn) @@ -128,6 +131,7 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id, case RDMA_CM_EVENT_ALT_ROUTE_ERROR: rdsdebug("RDS: alt route resolve error\n"); break; +#endif case RDMA_CM_EVENT_ROUTE_ERROR: /* IP might have been moved so flush the ARP entry and retry */ @@ -163,8 +167,13 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id, break; case RDMA_CM_EVENT_ADDR_CHANGE: +#if RDMA_RDS_APM_SUPPORTED if (conn && !rds_ib_apm_enabled) rds_conn_drop(conn); +#else + if (conn) + rds_conn_drop(conn); +#endif break; case RDMA_CM_EVENT_DISCONNECTED: diff --git a/net/rds/rds.h b/net/rds/rds.h index f329354a07fcd..d2c2fe19021db 100644 --- a/net/rds/rds.h +++ b/net/rds/rds.h @@ -22,6 +22,7 @@ #define RDS_PROTOCOL(maj, min) (((maj) << 8) | min) #define IB_RDS_CQ_VECTOR_SUPPORTED 0 +#define RDMA_RDS_APM_SUPPORTED 0 /* * XXX randomly chosen, but at least seems to be unused: