Lines Matching refs:qentry

209 	struct smc_llc_qentry *qentry = flow->qentry;  in smc_llc_flow_qentry_clr()  local
211 flow->qentry = NULL; in smc_llc_flow_qentry_clr()
212 return qentry; in smc_llc_flow_qentry_clr()
217 struct smc_llc_qentry *qentry; in smc_llc_flow_qentry_del() local
219 if (flow->qentry) { in smc_llc_flow_qentry_del()
220 qentry = flow->qentry; in smc_llc_flow_qentry_del()
221 flow->qentry = NULL; in smc_llc_flow_qentry_del()
222 kfree(qentry); in smc_llc_flow_qentry_del()
227 struct smc_llc_qentry *qentry) in smc_llc_flow_qentry_set() argument
229 flow->qentry = qentry; in smc_llc_flow_qentry_set()
233 struct smc_llc_qentry *qentry) in smc_llc_flow_parallel() argument
235 u8 msg_type = qentry->msg.raw.hdr.common.llc_type; in smc_llc_flow_parallel()
239 lgr->delayed_event = qentry; in smc_llc_flow_parallel()
248 qentry->msg.raw.hdr.common.type, in smc_llc_flow_parallel()
250 kfree(qentry); in smc_llc_flow_parallel()
255 struct smc_llc_qentry *qentry) in smc_llc_flow_start() argument
257 struct smc_link_group *lgr = qentry->link->lgr; in smc_llc_flow_start()
262 smc_llc_flow_parallel(lgr, flow->type, qentry); in smc_llc_flow_start()
266 switch (qentry->msg.raw.hdr.common.llc_type) { in smc_llc_flow_start()
280 smc_llc_flow_qentry_set(flow, qentry); in smc_llc_flow_start()
344 (flow->qentry || in smc_llc_wait()
348 if (!flow->qentry || in smc_llc_wait()
353 rcv_msg = flow->qentry->msg.raw.hdr.common.llc_type; in smc_llc_wait()
367 flow->qentry->msg.raw.hdr.flags); in smc_llc_wait()
371 return flow->qentry; in smc_llc_wait()
893 struct smc_llc_qentry *qentry; in smc_llc_cli_rkey_exchange() local
903 qentry = smc_llc_wait(lgr, NULL, SMC_LLC_WAIT_TIME, in smc_llc_cli_rkey_exchange()
905 if (!qentry) { in smc_llc_cli_rkey_exchange()
909 addc_llc = &qentry->msg.add_link_cont; in smc_llc_cli_rkey_exchange()
931 static int smc_llc_cli_add_link_reject(struct smc_llc_qentry *qentry) in smc_llc_cli_add_link_reject() argument
933 qentry->msg.raw.hdr.flags |= SMC_LLC_FLAG_RESP; in smc_llc_cli_add_link_reject()
934 qentry->msg.raw.hdr.flags |= SMC_LLC_FLAG_ADD_LNK_REJ; in smc_llc_cli_add_link_reject()
935 qentry->msg.raw.hdr.add_link_rej_rsn = SMC_LLC_REJ_RSN_NO_ALT_PATH; in smc_llc_cli_add_link_reject()
936 smc_llc_init_msg_hdr(&qentry->msg.raw.hdr, qentry->link->lgr, in smc_llc_cli_add_link_reject()
937 sizeof(qentry->msg)); in smc_llc_cli_add_link_reject()
938 return smc_llc_send_message(qentry->link, &qentry->msg); in smc_llc_cli_add_link_reject()
947 struct smc_llc_qentry *qentry = NULL; in smc_llc_cli_conf_link() local
951 qentry = smc_llc_wait(lgr, NULL, SMC_LLC_WAIT_FIRST_TIME, 0); in smc_llc_cli_conf_link()
952 if (!qentry) { in smc_llc_cli_conf_link()
958 if (qentry->msg.raw.hdr.common.llc_type != SMC_LLC_CONFIRM_LINK) { in smc_llc_cli_conf_link()
960 qentry->msg.raw.hdr.flags |= SMC_LLC_FLAG_RESP; in smc_llc_cli_conf_link()
961 smc_llc_send_message(link, &qentry->msg); in smc_llc_cli_conf_link()
965 smc_llc_save_peer_uid(qentry); in smc_llc_cli_conf_link()
1030 int smc_llc_cli_add_link(struct smc_link *link, struct smc_llc_qentry *qentry) in smc_llc_cli_add_link() argument
1032 struct smc_llc_msg_add_link *llc = &qentry->msg.add_link; in smc_llc_cli_add_link()
1116 smc_llc_cli_add_link_reject(qentry); in smc_llc_cli_add_link()
1119 kfree(qentry); in smc_llc_cli_add_link()
1163 struct smc_llc_qentry *qentry) in smc_llc_cli_add_link_invite() argument
1193 kfree(qentry); in smc_llc_cli_add_link_invite()
1216 struct smc_llc_qentry *qentry; in smc_llc_process_cli_add_link() local
1218 qentry = smc_llc_flow_qentry_clr(&lgr->llc_flow_lcl); in smc_llc_process_cli_add_link()
1221 if (smc_llc_is_local_add_link(&qentry->msg)) in smc_llc_process_cli_add_link()
1222 smc_llc_cli_add_link_invite(qentry->link, qentry); in smc_llc_process_cli_add_link()
1224 smc_llc_cli_add_link(qentry->link, qentry); in smc_llc_process_cli_add_link()
1288 struct smc_llc_qentry *qentry; in smc_llc_delete_asym_link() local
1308 qentry = smc_llc_wait(lgr, lnk_new, SMC_LLC_WAIT_TIME, in smc_llc_delete_asym_link()
1310 if (!qentry) { in smc_llc_delete_asym_link()
1325 struct smc_llc_qentry *qentry = NULL; in smc_llc_srv_rkey_exchange() local
1337 qentry = smc_llc_wait(lgr, link, SMC_LLC_WAIT_TIME, in smc_llc_srv_rkey_exchange()
1339 if (!qentry) { in smc_llc_srv_rkey_exchange()
1343 addc_llc = &qentry->msg.add_link_cont; in smc_llc_srv_rkey_exchange()
1365 struct smc_llc_qentry *qentry = NULL; in smc_llc_srv_conf_link() local
1373 qentry = smc_llc_wait(lgr, link, SMC_LLC_WAIT_FIRST_TIME, 0); in smc_llc_srv_conf_link()
1374 if (!qentry || in smc_llc_srv_conf_link()
1375 qentry->msg.raw.hdr.common.llc_type != SMC_LLC_CONFIRM_LINK) { in smc_llc_srv_conf_link()
1379 if (qentry) in smc_llc_srv_conf_link()
1383 smc_llc_save_peer_uid(qentry); in smc_llc_srv_conf_link()
1394 static void smc_llc_send_req_add_link_response(struct smc_llc_qentry *qentry) in smc_llc_send_req_add_link_response() argument
1396 qentry->msg.raw.hdr.flags |= SMC_LLC_FLAG_RESP; in smc_llc_send_req_add_link_response()
1397 smc_llc_init_msg_hdr(&qentry->msg.raw.hdr, qentry->link->lgr, in smc_llc_send_req_add_link_response()
1398 sizeof(qentry->msg)); in smc_llc_send_req_add_link_response()
1399 memset(&qentry->msg.raw.data, 0, sizeof(qentry->msg.raw.data)); in smc_llc_send_req_add_link_response()
1400 smc_llc_send_message(qentry->link, &qentry->msg); in smc_llc_send_req_add_link_response()
1409 struct smc_llc_qentry *qentry = NULL; in smc_llc_srv_add_link() local
1474 qentry = smc_llc_wait(lgr, link, SMC_LLC_WAIT_TIME, SMC_LLC_ADD_LINK); in smc_llc_srv_add_link()
1475 if (!qentry) { in smc_llc_srv_add_link()
1479 add_llc = &qentry->msg.add_link; in smc_llc_srv_add_link()
1526 struct smc_link *link = lgr->llc_flow_lcl.qentry->link; in smc_llc_process_srv_add_link()
1527 struct smc_llc_qentry *qentry; in smc_llc_process_srv_add_link() local
1530 qentry = smc_llc_flow_qentry_clr(&lgr->llc_flow_lcl); in smc_llc_process_srv_add_link()
1533 rc = smc_llc_srv_add_link(link, qentry); in smc_llc_process_srv_add_link()
1539 kfree(qentry); in smc_llc_process_srv_add_link()
1593 struct smc_llc_qentry *qentry; in smc_llc_process_cli_delete_link() local
1597 qentry = smc_llc_flow_qentry_clr(&lgr->llc_flow_lcl); in smc_llc_process_cli_delete_link()
1598 lnk = qentry->link; in smc_llc_process_cli_delete_link()
1599 del_llc = &qentry->msg.delete_link; in smc_llc_process_cli_delete_link()
1617 smc_llc_send_message(lnk, &qentry->msg); in smc_llc_process_cli_delete_link()
1623 smc_llc_send_message(lnk, &qentry->msg); /* response */ in smc_llc_process_cli_delete_link()
1641 kfree(qentry); in smc_llc_process_cli_delete_link()
1671 struct smc_llc_qentry *qentry; in smc_llc_process_srv_delete_link() local
1676 qentry = smc_llc_flow_qentry_clr(&lgr->llc_flow_lcl); in smc_llc_process_srv_delete_link()
1677 lnk = qentry->link; in smc_llc_process_srv_delete_link()
1678 del_llc = &qentry->msg.delete_link; in smc_llc_process_srv_delete_link()
1680 if (qentry->msg.delete_link.hd.flags & SMC_LLC_FLAG_DEL_LINK_ALL) { in smc_llc_process_srv_delete_link()
1683 qentry->msg.delete_link.reason)); in smc_llc_process_srv_delete_link()
1707 if (!smc_llc_send_message(lnk, &qentry->msg)) { in smc_llc_process_srv_delete_link()
1732 kfree(qentry); in smc_llc_process_srv_delete_link()
1758 struct smc_llc_qentry *qentry; in smc_llc_rmt_conf_rkey() local
1764 qentry = lgr->llc_flow_rmt.qentry; in smc_llc_rmt_conf_rkey()
1765 llc = &qentry->msg.confirm_rkey; in smc_llc_rmt_conf_rkey()
1766 link = qentry->link; in smc_llc_rmt_conf_rkey()
1790 smc_llc_send_message(link, &qentry->msg); in smc_llc_rmt_conf_rkey()
1798 struct smc_llc_qentry *qentry; in smc_llc_rmt_delete_rkey() local
1803 qentry = lgr->llc_flow_rmt.qentry; in smc_llc_rmt_delete_rkey()
1804 llc = &qentry->msg.delete_rkey; in smc_llc_rmt_delete_rkey()
1805 link = qentry->link; in smc_llc_rmt_delete_rkey()
1840 smc_llc_send_message(link, &qentry->msg); in smc_llc_rmt_delete_rkey()
1856 struct smc_llc_qentry *qentry, *q; in smc_llc_event_flush() local
1859 list_for_each_entry_safe(qentry, q, &lgr->llc_event_q, list) { in smc_llc_event_flush()
1860 list_del_init(&qentry->list); in smc_llc_event_flush()
1861 kfree(qentry); in smc_llc_event_flush()
1866 static void smc_llc_event_handler(struct smc_llc_qentry *qentry) in smc_llc_event_handler() argument
1868 union smc_llc_msg *llc = &qentry->msg; in smc_llc_event_handler()
1869 struct smc_link *link = qentry->link; in smc_llc_event_handler()
1889 qentry)) { in smc_llc_event_handler()
1895 !lgr->llc_flow_lcl.qentry) { in smc_llc_event_handler()
1898 qentry); in smc_llc_event_handler()
1907 qentry); in smc_llc_event_handler()
1911 if (smc_llc_flow_start(&lgr->llc_flow_lcl, qentry)) { in smc_llc_event_handler()
1914 } else if (smc_llc_flow_start(&lgr->llc_flow_lcl, qentry)) { in smc_llc_event_handler()
1923 smc_llc_flow_qentry_set(&lgr->llc_flow_lcl, qentry); in smc_llc_event_handler()
1930 !lgr->llc_flow_lcl.qentry) { in smc_llc_event_handler()
1932 smc_llc_flow_qentry_set(&lgr->llc_flow_lcl, qentry); in smc_llc_event_handler()
1934 } else if (smc_llc_flow_start(&lgr->llc_flow_lcl, qentry)) { in smc_llc_event_handler()
1940 if (smc_llc_flow_start(&lgr->llc_flow_rmt, qentry)) { in smc_llc_event_handler()
1953 if (smc_llc_flow_start(&lgr->llc_flow_rmt, qentry)) { in smc_llc_event_handler()
1968 if (smc_llc_flow_start(&lgr->llc_flow_lcl, qentry)) { in smc_llc_event_handler()
1981 kfree(qentry); in smc_llc_event_handler()
1989 struct smc_llc_qentry *qentry; in smc_llc_event_work() local
1992 qentry = lgr->delayed_event; in smc_llc_event_work()
1994 if (smc_link_usable(qentry->link)) in smc_llc_event_work()
1995 smc_llc_event_handler(qentry); in smc_llc_event_work()
1997 kfree(qentry); in smc_llc_event_work()
2003 qentry = list_first_entry(&lgr->llc_event_q, in smc_llc_event_work()
2005 list_del_init(&qentry->list); in smc_llc_event_work()
2007 smc_llc_event_handler(qentry); in smc_llc_event_work()
2015 struct smc_llc_qentry *qentry) in smc_llc_rx_response() argument
2019 u8 llc_type = qentry->msg.raw.hdr.common.llc_type; in smc_llc_rx_response()
2029 if (flowtype != SMC_LLC_FLOW_ADD_LINK || flow->qentry) in smc_llc_rx_response()
2033 if (flowtype != SMC_LLC_FLOW_DEL_LINK || flow->qentry) in smc_llc_rx_response()
2038 if (flowtype != SMC_LLC_FLOW_RKEY || flow->qentry) in smc_llc_rx_response()
2046 qentry->msg.raw.hdr.common.type); in smc_llc_rx_response()
2049 kfree(qentry); in smc_llc_rx_response()
2053 smc_llc_flow_qentry_set(&link->lgr->llc_flow_lcl, qentry); in smc_llc_rx_response()
2060 struct smc_llc_qentry *qentry; in smc_llc_enqueue() local
2063 qentry = kmalloc(sizeof(*qentry), GFP_ATOMIC); in smc_llc_enqueue()
2064 if (!qentry) in smc_llc_enqueue()
2066 qentry->link = link; in smc_llc_enqueue()
2067 INIT_LIST_HEAD(&qentry->list); in smc_llc_enqueue()
2068 memcpy(&qentry->msg, llc, sizeof(union smc_llc_msg)); in smc_llc_enqueue()
2073 smc_llc_rx_response(link, qentry); in smc_llc_enqueue()
2079 list_add_tail(&qentry->list, &lgr->llc_event_q); in smc_llc_enqueue()
2212 struct smc_llc_qentry *qentry = NULL; in smc_llc_do_confirm_rkey() local
2219 qentry = smc_llc_wait(lgr, send_link, SMC_LLC_WAIT_TIME, in smc_llc_do_confirm_rkey()
2221 if (!qentry || (qentry->msg.raw.hdr.flags & SMC_LLC_FLAG_RKEY_NEG)) in smc_llc_do_confirm_rkey()
2224 if (qentry) in smc_llc_do_confirm_rkey()
2233 struct smc_llc_qentry *qentry = NULL; in smc_llc_do_delete_rkey() local
2246 qentry = smc_llc_wait(lgr, send_link, SMC_LLC_WAIT_TIME, in smc_llc_do_delete_rkey()
2248 if (!qentry || (qentry->msg.raw.hdr.flags & SMC_LLC_FLAG_RKEY_NEG)) in smc_llc_do_delete_rkey()
2251 if (qentry) in smc_llc_do_delete_rkey()
2265 void smc_llc_save_peer_uid(struct smc_llc_qentry *qentry) in smc_llc_save_peer_uid() argument
2267 memcpy(qentry->link->peer_link_uid, qentry->msg.confirm_link.link_uid, in smc_llc_save_peer_uid()
2272 int smc_llc_eval_conf_link(struct smc_llc_qentry *qentry, in smc_llc_eval_conf_link() argument
2276 qentry->link->link_id = qentry->msg.confirm_link.link_num; in smc_llc_eval_conf_link()
2277 smc_llc_link_set_uid(qentry->link); in smc_llc_eval_conf_link()
2279 if (!(qentry->msg.raw.hdr.flags & SMC_LLC_FLAG_NO_RMBE_EYEC)) in smc_llc_eval_conf_link()