@@ -922,7 +922,7 @@ static int rds_ib_conn_info_visitor(struct rds_connection *conn,
922
922
memset (iinfo , 0 , sizeof (* iinfo ));
923
923
924
924
/* We will only ever look at IB transports */
925
- if (conn -> c_trans != & rds_ib_transport )
925
+ if (conn -> c_trans != & rds_ib_transport || ! ic )
926
926
return 0 ;
927
927
if (conn -> c_isv6 )
928
928
return 0 ;
@@ -933,56 +933,57 @@ static int rds_ib_conn_info_visitor(struct rds_connection *conn,
933
933
memset (& iinfo -> src_gid , 0 , sizeof (iinfo -> src_gid ));
934
934
memset (& iinfo -> dst_gid , 0 , sizeof (iinfo -> dst_gid ));
935
935
936
- iinfo -> qp_num = -1 ;
937
- iinfo -> dst_qp_num = -1 ;
938
-
939
- if (ic ) {
940
- iinfo -> tos = conn -> c_tos ;
941
- iinfo -> sl = ic -> i_sl ;
942
- iinfo -> frag = ic -> i_frag_sz ;
943
- }
944
-
945
936
if (rds_conn_state (conn ) == RDS_CONN_UP ) {
946
937
struct rds_ib_device * rds_ibdev ;
947
938
948
939
rdma_read_gids (ic -> i_cm_id , (union ib_gid * )& iinfo -> src_gid ,
949
940
(union ib_gid * )& iinfo -> dst_gid );
950
-
951
941
rds_ibdev = ic -> rds_ibdev ;
952
- iinfo -> max_send_wr = ic -> i_send_ring .w_nr ;
953
- iinfo -> max_recv_wr = ic -> i_recv_ring .w_nr ;
954
942
iinfo -> max_send_sge = rds_ibdev -> max_sge ;
955
- iinfo -> qp_num = ic -> i_qp_num ;
956
- iinfo -> dst_qp_num = ic -> i_dst_qp_num ;
957
- iinfo -> recv_alloc_ctr = (uint32_t )atomic64_read (& ic -> i_recv_ring .w_alloc_ctr );
958
- iinfo -> recv_free_ctr = (uint32_t )atomic64_read (& ic -> i_recv_ring .w_free_ctr );
959
- iinfo -> flow_ctl_post_credit =
960
- IB_GET_POST_CREDITS (atomic_read (& ic -> i_credits ));
961
- iinfo -> flow_ctl_send_credit =
962
- IB_GET_SEND_CREDITS (atomic_read (& ic -> i_credits ));
963
943
rds_ib_get_mr_info (rds_ibdev , iinfo );
964
- iinfo -> cache_allocs = atomic_read (& ic -> i_cache_allocs );
965
- iinfo -> send_alloc_ctr = (uint32_t )atomic64_read (& ic -> i_send_ring .w_alloc_ctr );
966
- iinfo -> send_free_ctr = (uint32_t )atomic64_read (& ic -> i_send_ring .w_free_ctr );
967
- iinfo -> send_bytes =
968
- (uint64_t )atomic64_read (& conn -> c_send_bytes );
969
- iinfo -> recv_bytes =
970
- (uint64_t )atomic64_read (& conn -> c_recv_bytes );
971
- iinfo -> r_read_bytes =
972
- (uint64_t )atomic64_read (& ic -> i_r_read_bytes );
973
- iinfo -> r_write_bytes =
974
- (uint64_t )atomic64_read (& ic -> i_r_write_bytes );
975
- iinfo -> tx_poll_ts = jiffies_to_msecs (now - ic -> i_tx_poll_ts );
976
- iinfo -> rx_poll_ts = jiffies_to_msecs (now - ic -> i_rx_poll_ts );
977
- iinfo -> tx_poll_cnt =
978
- (uint64_t )atomic64_read (& ic -> i_tx_poll_cnt );
979
- iinfo -> rx_poll_cnt =
980
- (uint64_t )atomic64_read (& ic -> i_rx_poll_cnt );
981
- iinfo -> scq_vector = ic -> i_scq_vector ;
982
- iinfo -> rcq_vector = ic -> i_rcq_vector ;
944
+
983
945
iinfo -> scq_irq = ib_get_vector_irqn (rds_ibdev -> dev , ic -> i_scq_vector );
984
946
iinfo -> rcq_irq = ib_get_vector_irqn (rds_ibdev -> dev , ic -> i_rcq_vector );
985
947
}
948
+
949
+ iinfo -> tos = conn -> c_tos ;
950
+ iinfo -> sl = ic -> i_sl ;
951
+ iinfo -> conn_state = rds_conn_state (conn );
952
+ iinfo -> frag = ic -> i_frag_sz ;
953
+ iinfo -> max_send_wr = ic -> i_send_ring .w_nr ;
954
+ iinfo -> max_recv_wr = ic -> i_recv_ring .w_nr ;
955
+ iinfo -> qp_num = ic -> i_qp_num ;
956
+ iinfo -> dst_qp_num = ic -> i_dst_qp_num ;
957
+ iinfo -> recv_alloc_ctr =
958
+ (uint32_t )atomic64_read (& ic -> i_recv_ring .w_alloc_ctr );
959
+ iinfo -> recv_free_ctr =
960
+ (uint32_t )atomic64_read (& ic -> i_recv_ring .w_free_ctr );
961
+ iinfo -> flow_ctl_post_credit =
962
+ IB_GET_POST_CREDITS (atomic_read (& ic -> i_credits ));
963
+ iinfo -> flow_ctl_send_credit =
964
+ IB_GET_SEND_CREDITS (atomic_read (& ic -> i_credits ));
965
+ iinfo -> cache_allocs = atomic_read (& ic -> i_cache_allocs );
966
+ iinfo -> send_alloc_ctr =
967
+ (uint32_t )atomic64_read (& ic -> i_send_ring .w_alloc_ctr );
968
+ iinfo -> send_free_ctr =
969
+ (uint32_t )atomic64_read (& ic -> i_send_ring .w_free_ctr );
970
+ iinfo -> send_bytes =
971
+ (uint64_t )atomic64_read (& conn -> c_send_bytes );
972
+ iinfo -> recv_bytes =
973
+ (uint64_t )atomic64_read (& conn -> c_recv_bytes );
974
+ iinfo -> r_read_bytes =
975
+ (uint64_t )atomic64_read (& ic -> i_r_read_bytes );
976
+ iinfo -> r_write_bytes =
977
+ (uint64_t )atomic64_read (& ic -> i_r_write_bytes );
978
+ iinfo -> tx_poll_ts = jiffies_to_msecs (now - ic -> i_tx_poll_ts );
979
+ iinfo -> rx_poll_ts = jiffies_to_msecs (now - ic -> i_rx_poll_ts );
980
+ iinfo -> tx_poll_cnt =
981
+ (uint64_t )atomic64_read (& ic -> i_tx_poll_cnt );
982
+ iinfo -> rx_poll_cnt =
983
+ (uint64_t )atomic64_read (& ic -> i_rx_poll_cnt );
984
+ iinfo -> scq_vector = ic -> i_scq_vector ;
985
+ iinfo -> rcq_vector = ic -> i_rcq_vector ;
986
+
986
987
return 1 ;
987
988
}
988
989
@@ -998,7 +999,7 @@ static int rds6_ib_conn_info_visitor(struct rds_connection *conn,
998
999
memset (iinfo6 , 0 , sizeof (* iinfo6 ));
999
1000
1000
1001
/* We will only ever look at IB transports */
1001
- if (conn -> c_trans != & rds_ib_transport )
1002
+ if (conn -> c_trans != & rds_ib_transport || ! ic )
1002
1003
return 0 ;
1003
1004
1004
1005
iinfo6 -> src_addr = conn -> c_laddr ;
@@ -1007,56 +1008,58 @@ static int rds6_ib_conn_info_visitor(struct rds_connection *conn,
1007
1008
memset (& iinfo6 -> src_gid , 0 , sizeof (iinfo6 -> src_gid ));
1008
1009
memset (& iinfo6 -> dst_gid , 0 , sizeof (iinfo6 -> dst_gid ));
1009
1010
1010
- iinfo6 -> qp_num = -1 ;
1011
- iinfo6 -> dst_qp_num = -1 ;
1012
-
1013
- if (ic ) {
1014
- iinfo6 -> tos = conn -> c_tos ;
1015
- iinfo6 -> sl = ic -> i_sl ;
1016
- iinfo6 -> frag = ic -> i_frag_sz ;
1017
- }
1018
-
1019
1011
if (rds_conn_state (conn ) == RDS_CONN_UP ) {
1020
1012
struct rds_ib_device * rds_ibdev ;
1021
1013
1022
1014
rdma_read_gids (ic -> i_cm_id , (union ib_gid * )& iinfo6 -> src_gid ,
1023
1015
(union ib_gid * )& iinfo6 -> dst_gid );
1024
1016
1025
1017
rds_ibdev = ic -> rds_ibdev ;
1026
- iinfo6 -> max_send_wr = ic -> i_send_ring .w_nr ;
1027
- iinfo6 -> max_recv_wr = ic -> i_recv_ring .w_nr ;
1028
1018
iinfo6 -> max_send_sge = rds_ibdev -> max_sge ;
1029
- iinfo6 -> qp_num = ic -> i_qp_num ;
1030
- iinfo6 -> dst_qp_num = ic -> i_dst_qp_num ;
1031
- iinfo6 -> recv_alloc_ctr = (uint32_t )atomic64_read (& ic -> i_recv_ring .w_alloc_ctr );
1032
- iinfo6 -> recv_free_ctr = (uint32_t )atomic64_read (& ic -> i_recv_ring .w_free_ctr );
1033
- iinfo6 -> flow_ctl_post_credit =
1034
- IB_GET_POST_CREDITS (atomic_read (& ic -> i_credits ));
1035
- iinfo6 -> flow_ctl_send_credit =
1036
- IB_GET_SEND_CREDITS (atomic_read (& ic -> i_credits ));
1037
1019
rds6_ib_get_mr_info (rds_ibdev , iinfo6 );
1038
- iinfo6 -> cache_allocs = atomic_read (& ic -> i_cache_allocs );
1039
- iinfo6 -> send_alloc_ctr = (uint32_t )atomic64_read (& ic -> i_send_ring .w_alloc_ctr );
1040
- iinfo6 -> send_free_ctr = (uint32_t )atomic64_read (& ic -> i_send_ring .w_free_ctr );
1041
- iinfo6 -> send_bytes =
1042
- (uint64_t )atomic64_read (& conn -> c_send_bytes );
1043
- iinfo6 -> recv_bytes =
1044
- (uint64_t )atomic64_read (& conn -> c_recv_bytes );
1045
- iinfo6 -> r_read_bytes =
1046
- (uint64_t )atomic64_read (& ic -> i_r_read_bytes );
1047
- iinfo6 -> r_write_bytes =
1048
- (uint64_t )atomic64_read (& ic -> i_r_write_bytes );
1049
- iinfo6 -> tx_poll_ts = jiffies_to_msecs (now - ic -> i_tx_poll_ts );
1050
- iinfo6 -> rx_poll_ts = jiffies_to_msecs (now - ic -> i_rx_poll_ts );
1051
- iinfo6 -> tx_poll_cnt =
1052
- (uint64_t )atomic64_read (& ic -> i_tx_poll_cnt );
1053
- iinfo6 -> rx_poll_cnt =
1054
- (uint64_t )atomic64_read (& ic -> i_rx_poll_cnt );
1055
- iinfo6 -> scq_vector = ic -> i_scq_vector ;
1056
- iinfo6 -> rcq_vector = ic -> i_rcq_vector ;
1020
+
1057
1021
iinfo6 -> scq_irq = ib_get_vector_irqn (rds_ibdev -> dev , ic -> i_scq_vector );
1058
1022
iinfo6 -> rcq_irq = ib_get_vector_irqn (rds_ibdev -> dev , ic -> i_rcq_vector );
1059
1023
}
1024
+
1025
+ iinfo6 -> tos = conn -> c_tos ;
1026
+ iinfo6 -> sl = ic -> i_sl ;
1027
+ iinfo6 -> conn_state = rds_conn_state (conn );
1028
+ iinfo6 -> frag = ic -> i_frag_sz ;
1029
+ iinfo6 -> max_send_wr = ic -> i_send_ring .w_nr ;
1030
+ iinfo6 -> max_recv_wr = ic -> i_recv_ring .w_nr ;
1031
+ iinfo6 -> qp_num = ic -> i_qp_num ;
1032
+ iinfo6 -> dst_qp_num = ic -> i_dst_qp_num ;
1033
+ iinfo6 -> recv_alloc_ctr =
1034
+ (uint32_t )atomic64_read (& ic -> i_recv_ring .w_alloc_ctr );
1035
+ iinfo6 -> recv_free_ctr =
1036
+ (uint32_t )atomic64_read (& ic -> i_recv_ring .w_free_ctr );
1037
+ iinfo6 -> flow_ctl_post_credit =
1038
+ IB_GET_POST_CREDITS (atomic_read (& ic -> i_credits ));
1039
+ iinfo6 -> flow_ctl_send_credit =
1040
+ IB_GET_SEND_CREDITS (atomic_read (& ic -> i_credits ));
1041
+ iinfo6 -> cache_allocs = atomic_read (& ic -> i_cache_allocs );
1042
+ iinfo6 -> send_alloc_ctr =
1043
+ (uint32_t )atomic64_read (& ic -> i_send_ring .w_alloc_ctr );
1044
+ iinfo6 -> send_free_ctr =
1045
+ (uint32_t )atomic64_read (& ic -> i_send_ring .w_free_ctr );
1046
+ iinfo6 -> send_bytes =
1047
+ (uint64_t )atomic64_read (& conn -> c_send_bytes );
1048
+ iinfo6 -> recv_bytes =
1049
+ (uint64_t )atomic64_read (& conn -> c_recv_bytes );
1050
+ iinfo6 -> r_read_bytes =
1051
+ (uint64_t )atomic64_read (& ic -> i_r_read_bytes );
1052
+ iinfo6 -> r_write_bytes =
1053
+ (uint64_t )atomic64_read (& ic -> i_r_write_bytes );
1054
+ iinfo6 -> tx_poll_ts = jiffies_to_msecs (now - ic -> i_tx_poll_ts );
1055
+ iinfo6 -> rx_poll_ts = jiffies_to_msecs (now - ic -> i_rx_poll_ts );
1056
+ iinfo6 -> tx_poll_cnt =
1057
+ (uint64_t )atomic64_read (& ic -> i_tx_poll_cnt );
1058
+ iinfo6 -> rx_poll_cnt =
1059
+ (uint64_t )atomic64_read (& ic -> i_rx_poll_cnt );
1060
+ iinfo6 -> scq_vector = ic -> i_scq_vector ;
1061
+ iinfo6 -> rcq_vector = ic -> i_rcq_vector ;
1062
+
1060
1063
return 1 ;
1061
1064
}
1062
1065
#endif
0 commit comments