Hi Shiraz, I love your patch! Perhaps something to improve: [auto build test WARNING on rdma/for-next] [also build test WARNING on linus/master v6.1-rc3 next-20221104] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Shiraz-Saleem/irdma-for-next-updates-11-4-2022/20221105-075008 base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next patch link: https://lore.kernel.org/r/20221104234749.1084-3-shiraz.saleem%40intel.com patch subject: [PATCH for-next 2/3] RDMA/irdma: Fix RQ completion opcode config: i386-randconfig-a013 compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/376b89f7f8be5fb9e46cdd416d0e5b8341c61fb7 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Shiraz-Saleem/irdma-for-next-updates-11-4-2022/20221105-075008 git checkout 376b89f7f8be5fb9e46cdd416d0e5b8341c61fb7 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/infiniband/hw/irdma/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> drivers/infiniband/hw/irdma/uk.c:1248:8: warning: variable 'op_type' is uninitialized when used here [-Wuninitialized] if (op_type == IRDMA_OP_TYPE_BIND_MW && info->minor_err == FLUSH_PROT_ERR) ^~~~~~~ drivers/infiniband/hw/irdma/uk.c:1053:12: note: initialize the variable 'op_type' to silence this warning u8 op_type; ^ = '\0' 1 warning generated. vim +/op_type +1248 drivers/infiniband/hw/irdma/uk.c 551c46edc7690c Mustafa Ismail 2021-06-02 1036 551c46edc7690c Mustafa Ismail 2021-06-02 1037 /** 551c46edc7690c Mustafa Ismail 2021-06-02 1038 * irdma_uk_cq_poll_cmpl - get cq completion info 551c46edc7690c Mustafa Ismail 2021-06-02 1039 * @cq: hw cq 551c46edc7690c Mustafa Ismail 2021-06-02 1040 * @info: cq poll information returned 551c46edc7690c Mustafa Ismail 2021-06-02 1041 */ 2c4b14ea950710 Shiraz Saleem 2022-02-17 1042 int irdma_uk_cq_poll_cmpl(struct irdma_cq_uk *cq, 2c4b14ea950710 Shiraz Saleem 2022-02-17 1043 struct irdma_cq_poll_info *info) 551c46edc7690c Mustafa Ismail 2021-06-02 1044 { 551c46edc7690c Mustafa Ismail 2021-06-02 1045 u64 comp_ctx, qword0, qword2, qword3; 551c46edc7690c Mustafa Ismail 2021-06-02 1046 __le64 *cqe; 551c46edc7690c Mustafa Ismail 2021-06-02 1047 struct irdma_qp_uk *qp; 551c46edc7690c Mustafa Ismail 2021-06-02 1048 struct irdma_ring *pring = NULL; 376b89f7f8be5f Mustafa Ismail 2022-11-04 1049 u32 wqe_idx; 2c4b14ea950710 Shiraz Saleem 2022-02-17 1050 int ret_code; 551c46edc7690c Mustafa Ismail 2021-06-02 1051 bool move_cq_head = true; 551c46edc7690c Mustafa Ismail 2021-06-02 1052 u8 polarity; dcb23bbb1de7e0 Sindhu-Devale 2022-09-06 1053 u8 op_type; 551c46edc7690c Mustafa Ismail 2021-06-02 1054 bool ext_valid; 551c46edc7690c Mustafa Ismail 2021-06-02 1055 __le64 *ext_cqe; 551c46edc7690c Mustafa Ismail 2021-06-02 1056 551c46edc7690c Mustafa Ismail 2021-06-02 1057 if (cq->avoid_mem_cflct) 551c46edc7690c Mustafa Ismail 2021-06-02 1058 cqe = IRDMA_GET_CURRENT_EXTENDED_CQ_ELEM(cq); 551c46edc7690c Mustafa Ismail 2021-06-02 1059 else 551c46edc7690c Mustafa Ismail 2021-06-02 1060 cqe = IRDMA_GET_CURRENT_CQ_ELEM(cq); 551c46edc7690c Mustafa Ismail 2021-06-02 1061 551c46edc7690c Mustafa Ismail 2021-06-02 1062 get_64bit_val(cqe, 24, &qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1063 polarity = (u8)FIELD_GET(IRDMA_CQ_VALID, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1064 if (polarity != cq->polarity) 2c4b14ea950710 Shiraz Saleem 2022-02-17 1065 return -ENOENT; 551c46edc7690c Mustafa Ismail 2021-06-02 1066 551c46edc7690c Mustafa Ismail 2021-06-02 1067 /* Ensure CQE contents are read after valid bit is checked */ 551c46edc7690c Mustafa Ismail 2021-06-02 1068 dma_rmb(); 551c46edc7690c Mustafa Ismail 2021-06-02 1069 551c46edc7690c Mustafa Ismail 2021-06-02 1070 ext_valid = (bool)FIELD_GET(IRDMA_CQ_EXTCQE, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1071 if (ext_valid) { 551c46edc7690c Mustafa Ismail 2021-06-02 1072 u64 qword6, qword7; 551c46edc7690c Mustafa Ismail 2021-06-02 1073 u32 peek_head; 551c46edc7690c Mustafa Ismail 2021-06-02 1074 551c46edc7690c Mustafa Ismail 2021-06-02 1075 if (cq->avoid_mem_cflct) { 551c46edc7690c Mustafa Ismail 2021-06-02 1076 ext_cqe = (__le64 *)((u8 *)cqe + 32); 551c46edc7690c Mustafa Ismail 2021-06-02 1077 get_64bit_val(ext_cqe, 24, &qword7); e93c7d8e8c4cf8 Shiraz Saleem 2021-10-05 1078 polarity = (u8)FIELD_GET(IRDMA_CQ_VALID, qword7); 551c46edc7690c Mustafa Ismail 2021-06-02 1079 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1080 peek_head = (cq->cq_ring.head + 1) % cq->cq_ring.size; 551c46edc7690c Mustafa Ismail 2021-06-02 1081 ext_cqe = cq->cq_base[peek_head].buf; 551c46edc7690c Mustafa Ismail 2021-06-02 1082 get_64bit_val(ext_cqe, 24, &qword7); e93c7d8e8c4cf8 Shiraz Saleem 2021-10-05 1083 polarity = (u8)FIELD_GET(IRDMA_CQ_VALID, qword7); 551c46edc7690c Mustafa Ismail 2021-06-02 1084 if (!peek_head) 551c46edc7690c Mustafa Ismail 2021-06-02 1085 polarity ^= 1; 551c46edc7690c Mustafa Ismail 2021-06-02 1086 } 551c46edc7690c Mustafa Ismail 2021-06-02 1087 if (polarity != cq->polarity) 2c4b14ea950710 Shiraz Saleem 2022-02-17 1088 return -ENOENT; 551c46edc7690c Mustafa Ismail 2021-06-02 1089 551c46edc7690c Mustafa Ismail 2021-06-02 1090 /* Ensure ext CQE contents are read after ext valid bit is checked */ 551c46edc7690c Mustafa Ismail 2021-06-02 1091 dma_rmb(); 551c46edc7690c Mustafa Ismail 2021-06-02 1092 551c46edc7690c Mustafa Ismail 2021-06-02 1093 info->imm_valid = (bool)FIELD_GET(IRDMA_CQ_IMMVALID, qword7); 551c46edc7690c Mustafa Ismail 2021-06-02 1094 if (info->imm_valid) { 551c46edc7690c Mustafa Ismail 2021-06-02 1095 u64 qword4; 551c46edc7690c Mustafa Ismail 2021-06-02 1096 551c46edc7690c Mustafa Ismail 2021-06-02 1097 get_64bit_val(ext_cqe, 0, &qword4); 551c46edc7690c Mustafa Ismail 2021-06-02 1098 info->imm_data = (u32)FIELD_GET(IRDMA_CQ_IMMDATALOW32, qword4); 551c46edc7690c Mustafa Ismail 2021-06-02 1099 } 551c46edc7690c Mustafa Ismail 2021-06-02 1100 info->ud_smac_valid = (bool)FIELD_GET(IRDMA_CQ_UDSMACVALID, qword7); 551c46edc7690c Mustafa Ismail 2021-06-02 1101 info->ud_vlan_valid = (bool)FIELD_GET(IRDMA_CQ_UDVLANVALID, qword7); 551c46edc7690c Mustafa Ismail 2021-06-02 1102 if (info->ud_smac_valid || info->ud_vlan_valid) { 551c46edc7690c Mustafa Ismail 2021-06-02 1103 get_64bit_val(ext_cqe, 16, &qword6); 551c46edc7690c Mustafa Ismail 2021-06-02 1104 if (info->ud_vlan_valid) 551c46edc7690c Mustafa Ismail 2021-06-02 1105 info->ud_vlan = (u16)FIELD_GET(IRDMA_CQ_UDVLAN, qword6); 551c46edc7690c Mustafa Ismail 2021-06-02 1106 if (info->ud_smac_valid) { 551c46edc7690c Mustafa Ismail 2021-06-02 1107 info->ud_smac[5] = qword6 & 0xFF; 551c46edc7690c Mustafa Ismail 2021-06-02 1108 info->ud_smac[4] = (qword6 >> 8) & 0xFF; 551c46edc7690c Mustafa Ismail 2021-06-02 1109 info->ud_smac[3] = (qword6 >> 16) & 0xFF; 551c46edc7690c Mustafa Ismail 2021-06-02 1110 info->ud_smac[2] = (qword6 >> 24) & 0xFF; 551c46edc7690c Mustafa Ismail 2021-06-02 1111 info->ud_smac[1] = (qword6 >> 32) & 0xFF; 551c46edc7690c Mustafa Ismail 2021-06-02 1112 info->ud_smac[0] = (qword6 >> 40) & 0xFF; 551c46edc7690c Mustafa Ismail 2021-06-02 1113 } 551c46edc7690c Mustafa Ismail 2021-06-02 1114 } 551c46edc7690c Mustafa Ismail 2021-06-02 1115 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1116 info->imm_valid = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1117 info->ud_smac_valid = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1118 info->ud_vlan_valid = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1119 } 551c46edc7690c Mustafa Ismail 2021-06-02 1120 376b89f7f8be5f Mustafa Ismail 2022-11-04 1121 info->q_type = (u8)FIELD_GET(IRDMA_CQ_SQ, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1122 info->error = (bool)FIELD_GET(IRDMA_CQ_ERROR, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1123 info->push_dropped = (bool)FIELD_GET(IRDMACQ_PSHDROP, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1124 info->ipv4 = (bool)FIELD_GET(IRDMACQ_IPV4, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1125 if (info->error) { 551c46edc7690c Mustafa Ismail 2021-06-02 1126 info->major_err = FIELD_GET(IRDMA_CQ_MAJERR, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1127 info->minor_err = FIELD_GET(IRDMA_CQ_MINERR, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1128 if (info->major_err == IRDMA_FLUSH_MAJOR_ERR) { 551c46edc7690c Mustafa Ismail 2021-06-02 1129 info->comp_status = IRDMA_COMPL_STATUS_FLUSHED; 551c46edc7690c Mustafa Ismail 2021-06-02 1130 /* Set the min error to standard flush error code for remaining cqes */ 551c46edc7690c Mustafa Ismail 2021-06-02 1131 if (info->minor_err != FLUSH_GENERAL_ERR) { 551c46edc7690c Mustafa Ismail 2021-06-02 1132 qword3 &= ~IRDMA_CQ_MINERR; 551c46edc7690c Mustafa Ismail 2021-06-02 1133 qword3 |= FIELD_PREP(IRDMA_CQ_MINERR, FLUSH_GENERAL_ERR); 551c46edc7690c Mustafa Ismail 2021-06-02 1134 set_64bit_val(cqe, 24, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1135 } 551c46edc7690c Mustafa Ismail 2021-06-02 1136 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1137 info->comp_status = IRDMA_COMPL_STATUS_UNKNOWN; 551c46edc7690c Mustafa Ismail 2021-06-02 1138 } 551c46edc7690c Mustafa Ismail 2021-06-02 1139 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1140 info->comp_status = IRDMA_COMPL_STATUS_SUCCESS; 551c46edc7690c Mustafa Ismail 2021-06-02 1141 } 551c46edc7690c Mustafa Ismail 2021-06-02 1142 551c46edc7690c Mustafa Ismail 2021-06-02 1143 get_64bit_val(cqe, 0, &qword0); 551c46edc7690c Mustafa Ismail 2021-06-02 1144 get_64bit_val(cqe, 16, &qword2); 551c46edc7690c Mustafa Ismail 2021-06-02 1145 551c46edc7690c Mustafa Ismail 2021-06-02 1146 info->tcp_seq_num_rtt = (u32)FIELD_GET(IRDMACQ_TCPSEQNUMRTT, qword0); 551c46edc7690c Mustafa Ismail 2021-06-02 1147 info->qp_id = (u32)FIELD_GET(IRDMACQ_QPID, qword2); 551c46edc7690c Mustafa Ismail 2021-06-02 1148 info->ud_src_qpn = (u32)FIELD_GET(IRDMACQ_UDSRCQPN, qword2); 551c46edc7690c Mustafa Ismail 2021-06-02 1149 551c46edc7690c Mustafa Ismail 2021-06-02 1150 get_64bit_val(cqe, 8, &comp_ctx); 551c46edc7690c Mustafa Ismail 2021-06-02 1151 551c46edc7690c Mustafa Ismail 2021-06-02 1152 info->solicited_event = (bool)FIELD_GET(IRDMACQ_SOEVENT, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1153 qp = (struct irdma_qp_uk *)(unsigned long)comp_ctx; 551c46edc7690c Mustafa Ismail 2021-06-02 1154 if (!qp || qp->destroy_pending) { 2c4b14ea950710 Shiraz Saleem 2022-02-17 1155 ret_code = -EFAULT; 551c46edc7690c Mustafa Ismail 2021-06-02 1156 goto exit; 551c46edc7690c Mustafa Ismail 2021-06-02 1157 } 551c46edc7690c Mustafa Ismail 2021-06-02 1158 wqe_idx = (u32)FIELD_GET(IRDMA_CQ_WQEIDX, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1159 info->qp_handle = (irdma_qp_handle)(unsigned long)qp; 376b89f7f8be5f Mustafa Ismail 2022-11-04 1160 info->op_type = (u8)FIELD_GET(IRDMA_CQ_SQ, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1161 376b89f7f8be5f Mustafa Ismail 2022-11-04 1162 if (info->q_type == IRDMA_CQE_QTYPE_RQ) { 551c46edc7690c Mustafa Ismail 2021-06-02 1163 u32 array_idx; 551c46edc7690c Mustafa Ismail 2021-06-02 1164 551c46edc7690c Mustafa Ismail 2021-06-02 1165 array_idx = wqe_idx / qp->rq_wqe_size_multiplier; 551c46edc7690c Mustafa Ismail 2021-06-02 1166 551c46edc7690c Mustafa Ismail 2021-06-02 1167 if (info->comp_status == IRDMA_COMPL_STATUS_FLUSHED || 551c46edc7690c Mustafa Ismail 2021-06-02 1168 info->comp_status == IRDMA_COMPL_STATUS_UNKNOWN) { 551c46edc7690c Mustafa Ismail 2021-06-02 1169 if (!IRDMA_RING_MORE_WORK(qp->rq_ring)) { 2c4b14ea950710 Shiraz Saleem 2022-02-17 1170 ret_code = -ENOENT; 551c46edc7690c Mustafa Ismail 2021-06-02 1171 goto exit; 551c46edc7690c Mustafa Ismail 2021-06-02 1172 } 551c46edc7690c Mustafa Ismail 2021-06-02 1173 551c46edc7690c Mustafa Ismail 2021-06-02 1174 info->wr_id = qp->rq_wrid_array[qp->rq_ring.tail]; 551c46edc7690c Mustafa Ismail 2021-06-02 1175 array_idx = qp->rq_ring.tail; 551c46edc7690c Mustafa Ismail 2021-06-02 1176 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1177 info->wr_id = qp->rq_wrid_array[array_idx]; 551c46edc7690c Mustafa Ismail 2021-06-02 1178 } 551c46edc7690c Mustafa Ismail 2021-06-02 1179 551c46edc7690c Mustafa Ismail 2021-06-02 1180 info->bytes_xfered = (u32)FIELD_GET(IRDMACQ_PAYLDLEN, qword0); 551c46edc7690c Mustafa Ismail 2021-06-02 1181 551c46edc7690c Mustafa Ismail 2021-06-02 1182 if (qword3 & IRDMACQ_STAG) { 551c46edc7690c Mustafa Ismail 2021-06-02 1183 info->stag_invalid_set = true; 551c46edc7690c Mustafa Ismail 2021-06-02 1184 info->inv_stag = (u32)FIELD_GET(IRDMACQ_INVSTAG, qword2); 551c46edc7690c Mustafa Ismail 2021-06-02 1185 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1186 info->stag_invalid_set = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1187 } 551c46edc7690c Mustafa Ismail 2021-06-02 1188 IRDMA_RING_SET_TAIL(qp->rq_ring, array_idx + 1); 551c46edc7690c Mustafa Ismail 2021-06-02 1189 if (info->comp_status == IRDMA_COMPL_STATUS_FLUSHED) { 551c46edc7690c Mustafa Ismail 2021-06-02 1190 qp->rq_flush_seen = true; 551c46edc7690c Mustafa Ismail 2021-06-02 1191 if (!IRDMA_RING_MORE_WORK(qp->rq_ring)) 551c46edc7690c Mustafa Ismail 2021-06-02 1192 qp->rq_flush_complete = true; 551c46edc7690c Mustafa Ismail 2021-06-02 1193 else 551c46edc7690c Mustafa Ismail 2021-06-02 1194 move_cq_head = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1195 } 551c46edc7690c Mustafa Ismail 2021-06-02 1196 pring = &qp->rq_ring; 551c46edc7690c Mustafa Ismail 2021-06-02 1197 } else { /* q_type is IRDMA_CQE_QTYPE_SQ */ 551c46edc7690c Mustafa Ismail 2021-06-02 1198 if (qp->first_sq_wq) { 551c46edc7690c Mustafa Ismail 2021-06-02 1199 if (wqe_idx + 1 >= qp->conn_wqes) 551c46edc7690c Mustafa Ismail 2021-06-02 1200 qp->first_sq_wq = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1201 551c46edc7690c Mustafa Ismail 2021-06-02 1202 if (wqe_idx < qp->conn_wqes && qp->sq_ring.head == qp->sq_ring.tail) { 551c46edc7690c Mustafa Ismail 2021-06-02 1203 IRDMA_RING_MOVE_HEAD_NOCHECK(cq->cq_ring); 551c46edc7690c Mustafa Ismail 2021-06-02 1204 IRDMA_RING_MOVE_TAIL(cq->cq_ring); 551c46edc7690c Mustafa Ismail 2021-06-02 1205 set_64bit_val(cq->shadow_area, 0, 551c46edc7690c Mustafa Ismail 2021-06-02 1206 IRDMA_RING_CURRENT_HEAD(cq->cq_ring)); 551c46edc7690c Mustafa Ismail 2021-06-02 1207 memset(info, 0, 551c46edc7690c Mustafa Ismail 2021-06-02 1208 sizeof(struct irdma_cq_poll_info)); 551c46edc7690c Mustafa Ismail 2021-06-02 1209 return irdma_uk_cq_poll_cmpl(cq, info); 551c46edc7690c Mustafa Ismail 2021-06-02 1210 } 551c46edc7690c Mustafa Ismail 2021-06-02 1211 } 551c46edc7690c Mustafa Ismail 2021-06-02 1212 /*cease posting push mode on push drop*/ 551c46edc7690c Mustafa Ismail 2021-06-02 1213 if (info->push_dropped) { 551c46edc7690c Mustafa Ismail 2021-06-02 1214 qp->push_mode = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1215 qp->push_dropped = true; 551c46edc7690c Mustafa Ismail 2021-06-02 1216 } 551c46edc7690c Mustafa Ismail 2021-06-02 1217 if (info->comp_status != IRDMA_COMPL_STATUS_FLUSHED) { 551c46edc7690c Mustafa Ismail 2021-06-02 1218 info->wr_id = qp->sq_wrtrk_array[wqe_idx].wrid; 551c46edc7690c Mustafa Ismail 2021-06-02 1219 if (!info->comp_status) 551c46edc7690c Mustafa Ismail 2021-06-02 1220 info->bytes_xfered = qp->sq_wrtrk_array[wqe_idx].wr_len; 551c46edc7690c Mustafa Ismail 2021-06-02 1221 info->op_type = (u8)FIELD_GET(IRDMACQ_OP, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1222 IRDMA_RING_SET_TAIL(qp->sq_ring, 551c46edc7690c Mustafa Ismail 2021-06-02 1223 wqe_idx + qp->sq_wrtrk_array[wqe_idx].quanta); 551c46edc7690c Mustafa Ismail 2021-06-02 1224 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1225 if (!IRDMA_RING_MORE_WORK(qp->sq_ring)) { 2c4b14ea950710 Shiraz Saleem 2022-02-17 1226 ret_code = -ENOENT; 551c46edc7690c Mustafa Ismail 2021-06-02 1227 goto exit; 551c46edc7690c Mustafa Ismail 2021-06-02 1228 } 551c46edc7690c Mustafa Ismail 2021-06-02 1229 551c46edc7690c Mustafa Ismail 2021-06-02 1230 do { 551c46edc7690c Mustafa Ismail 2021-06-02 1231 __le64 *sw_wqe; 551c46edc7690c Mustafa Ismail 2021-06-02 1232 u64 wqe_qword; 551c46edc7690c Mustafa Ismail 2021-06-02 1233 u32 tail; 551c46edc7690c Mustafa Ismail 2021-06-02 1234 551c46edc7690c Mustafa Ismail 2021-06-02 1235 tail = qp->sq_ring.tail; 551c46edc7690c Mustafa Ismail 2021-06-02 1236 sw_wqe = qp->sq_base[tail].elem; 551c46edc7690c Mustafa Ismail 2021-06-02 1237 get_64bit_val(sw_wqe, 24, 551c46edc7690c Mustafa Ismail 2021-06-02 1238 &wqe_qword); 376b89f7f8be5f Mustafa Ismail 2022-11-04 1239 info->op_type = (u8)FIELD_GET(IRDMAQPSQ_OPCODE, wqe_qword); 551c46edc7690c Mustafa Ismail 2021-06-02 1240 IRDMA_RING_SET_TAIL(qp->sq_ring, 551c46edc7690c Mustafa Ismail 2021-06-02 1241 tail + qp->sq_wrtrk_array[tail].quanta); 376b89f7f8be5f Mustafa Ismail 2022-11-04 1242 if (info->op_type != IRDMAQP_OP_NOP) { 551c46edc7690c Mustafa Ismail 2021-06-02 1243 info->wr_id = qp->sq_wrtrk_array[tail].wrid; 551c46edc7690c Mustafa Ismail 2021-06-02 1244 info->bytes_xfered = qp->sq_wrtrk_array[tail].wr_len; 551c46edc7690c Mustafa Ismail 2021-06-02 1245 break; 551c46edc7690c Mustafa Ismail 2021-06-02 1246 } 551c46edc7690c Mustafa Ismail 2021-06-02 1247 } while (1); dcb23bbb1de7e0 Sindhu-Devale 2022-09-06 @1248 if (op_type == IRDMA_OP_TYPE_BIND_MW && info->minor_err == FLUSH_PROT_ERR) dcb23bbb1de7e0 Sindhu-Devale 2022-09-06 1249 info->minor_err = FLUSH_MW_BIND_ERR; 551c46edc7690c Mustafa Ismail 2021-06-02 1250 qp->sq_flush_seen = true; 551c46edc7690c Mustafa Ismail 2021-06-02 1251 if (!IRDMA_RING_MORE_WORK(qp->sq_ring)) 551c46edc7690c Mustafa Ismail 2021-06-02 1252 qp->sq_flush_complete = true; 551c46edc7690c Mustafa Ismail 2021-06-02 1253 } 551c46edc7690c Mustafa Ismail 2021-06-02 1254 pring = &qp->sq_ring; 551c46edc7690c Mustafa Ismail 2021-06-02 1255 } 551c46edc7690c Mustafa Ismail 2021-06-02 1256 551c46edc7690c Mustafa Ismail 2021-06-02 1257 ret_code = 0; 551c46edc7690c Mustafa Ismail 2021-06-02 1258 551c46edc7690c Mustafa Ismail 2021-06-02 1259 exit: 551c46edc7690c Mustafa Ismail 2021-06-02 1260 if (!ret_code && info->comp_status == IRDMA_COMPL_STATUS_FLUSHED) 551c46edc7690c Mustafa Ismail 2021-06-02 1261 if (pring && IRDMA_RING_MORE_WORK(*pring)) 551c46edc7690c Mustafa Ismail 2021-06-02 1262 move_cq_head = false; 551c46edc7690c Mustafa Ismail 2021-06-02 1263 551c46edc7690c Mustafa Ismail 2021-06-02 1264 if (move_cq_head) { 551c46edc7690c Mustafa Ismail 2021-06-02 1265 IRDMA_RING_MOVE_HEAD_NOCHECK(cq->cq_ring); 551c46edc7690c Mustafa Ismail 2021-06-02 1266 if (!IRDMA_RING_CURRENT_HEAD(cq->cq_ring)) 551c46edc7690c Mustafa Ismail 2021-06-02 1267 cq->polarity ^= 1; 551c46edc7690c Mustafa Ismail 2021-06-02 1268 551c46edc7690c Mustafa Ismail 2021-06-02 1269 if (ext_valid && !cq->avoid_mem_cflct) { 551c46edc7690c Mustafa Ismail 2021-06-02 1270 IRDMA_RING_MOVE_HEAD_NOCHECK(cq->cq_ring); 551c46edc7690c Mustafa Ismail 2021-06-02 1271 if (!IRDMA_RING_CURRENT_HEAD(cq->cq_ring)) 551c46edc7690c Mustafa Ismail 2021-06-02 1272 cq->polarity ^= 1; 551c46edc7690c Mustafa Ismail 2021-06-02 1273 } 551c46edc7690c Mustafa Ismail 2021-06-02 1274 551c46edc7690c Mustafa Ismail 2021-06-02 1275 IRDMA_RING_MOVE_TAIL(cq->cq_ring); 551c46edc7690c Mustafa Ismail 2021-06-02 1276 if (!cq->avoid_mem_cflct && ext_valid) 551c46edc7690c Mustafa Ismail 2021-06-02 1277 IRDMA_RING_MOVE_TAIL(cq->cq_ring); 551c46edc7690c Mustafa Ismail 2021-06-02 1278 set_64bit_val(cq->shadow_area, 0, 551c46edc7690c Mustafa Ismail 2021-06-02 1279 IRDMA_RING_CURRENT_HEAD(cq->cq_ring)); 551c46edc7690c Mustafa Ismail 2021-06-02 1280 } else { 551c46edc7690c Mustafa Ismail 2021-06-02 1281 qword3 &= ~IRDMA_CQ_WQEIDX; 551c46edc7690c Mustafa Ismail 2021-06-02 1282 qword3 |= FIELD_PREP(IRDMA_CQ_WQEIDX, pring->tail); 551c46edc7690c Mustafa Ismail 2021-06-02 1283 set_64bit_val(cqe, 24, qword3); 551c46edc7690c Mustafa Ismail 2021-06-02 1284 } 551c46edc7690c Mustafa Ismail 2021-06-02 1285 551c46edc7690c Mustafa Ismail 2021-06-02 1286 return ret_code; 551c46edc7690c Mustafa Ismail 2021-06-02 1287 } 551c46edc7690c Mustafa Ismail 2021-06-02 1288 -- 0-DAY CI Kernel Test Service https://01.org/lkp