Lines Matching defs:llc

205 static void smc_llc_enqueue(struct smc_link *link, union smc_llc_msg *llc);
242 /* drop parallel or already-in-progress llc requests */
253 /* try to start a new llc flow, initiated by an incoming llc msg */
285 /* start a new local llc flow, wait till current flow finished */
319 /* finish the current llc flow */
479 /* send llc message */
528 /* send llc message */
555 /* send llc message */
693 /* send llc message */
732 /* send llc message */
757 /* send llc message */
764 /* schedule an llc send on link, may wait for buffers */
783 /* schedule an llc send on link, may wait for buffers,
1033 struct smc_llc_msg_add_link *llc = &qentry->msg.add_link;
1040 if (!llc->qp_mtu)
1058 ini->smcrv2.daddr = smc_ib_gid_to_ipv4(llc->sender_gid);
1061 if (!memcmp(llc->sender_gid, link->peer_gid, SMC_GID_SIZE) &&
1063 !memcmp(llc->sender_mac, link->peer_mac, ETH_ALEN))) {
1084 smc_llc_save_add_link_info(lnk_new, llc);
1085 lnk_new->link_id = llc->link_num; /* SMC server assigns link id */
1103 (u8 *)lgr->wr_rx_buf_v2 : (u8 *)llc;
1128 struct smc_llc_msg_req_add_link_v2 *llc;
1147 llc = (struct smc_llc_msg_req_add_link_v2 *)wr_buf;
1148 memset(llc, 0, SMC_WR_TX_SIZE);
1150 llc->hd.common.llc_type = SMC_LLC_REQ_ADD_LINK;
1152 memcpy(llc->gid[i], gidlist.list[i], sizeof(gidlist.list[0]));
1153 llc->gid_cnt = gidlist.len;
1154 len = sizeof(*llc) + (gidlist.len * sizeof(gidlist.list[0]));
1155 smc_llc_init_msg_hdr(&llc->hd, link->lgr, len);
1199 static bool smc_llc_is_empty_llc_message(union smc_llc_msg *llc)
1203 for (i = 0; i < ARRAY_SIZE(llc->raw.data); i++)
1204 if (llc->raw.data[i])
1209 static bool smc_llc_is_local_add_link(union smc_llc_msg *llc)
1211 if (llc->raw.hdr.common.llc_type == SMC_LLC_ADD_LINK &&
1212 smc_llc_is_empty_llc_message(llc))
1762 struct smc_llc_msg_confirm_rkey *llc;
1770 llc = &qentry->msg.confirm_rkey;
1773 num_entries = llc->rtoken[0].num_rkeys;
1778 llc->rtoken[0].rmb_vaddr,
1779 llc->rtoken[0].rmb_key);
1784 smc_rtoken_set2(lgr, rk_idx, llc->rtoken[i].link_id,
1785 llc->rtoken[i].rmb_vaddr,
1786 llc->rtoken[i].rmb_key);
1790 llc->hd.flags |= SMC_LLC_FLAG_RKEY_NEG;
1791 llc->hd.flags |= SMC_LLC_FLAG_RKEY_RETRY;
1793 llc->hd.flags |= SMC_LLC_FLAG_RESP;
1794 smc_llc_init_msg_hdr(&llc->hd, link->lgr, sizeof(*llc));
1802 struct smc_llc_msg_delete_rkey *llc;
1809 llc = &qentry->msg.delete_rkey;
1816 memcpy(lgr->wr_rx_buf_v2, llc, sizeof(*llc));
1819 llcv2 = (struct smc_llc_msg_delete_rkey_v2 *)llc;
1828 memset(&llc->rkey[0], 0, sizeof(llc->rkey));
1829 memset(&llc->reserved2, 0, sizeof(llc->reserved2));
1830 smc_llc_init_msg_hdr(&llc->hd, link->lgr, sizeof(*llc));
1832 llc->hd.flags |= SMC_LLC_FLAG_RKEY_NEG;
1833 llc->err_mask = llcv2->num_inval_rkeys;
1838 max = min_t(u8, llc->num_rkeys, SMC_LLC_DEL_RKEY_MAX);
1840 if (smc_rtoken_delete(link, llc->rkey[i]))
1844 llc->hd.flags |= SMC_LLC_FLAG_RKEY_NEG;
1845 llc->err_mask = err_mask;
1848 llc->hd.flags |= SMC_LLC_FLAG_RESP;
1862 /* flush the llc event queue */
1877 union smc_llc_msg *llc = &qentry->msg;
1884 switch (llc->raw.hdr.common.llc_type) {
1886 llc->test_link.hd.flags |= SMC_LLC_FLAG_RESP;
1887 smc_llc_send_message(link, llc);
1893 if (smc_llc_is_local_add_link(llc)) {
1950 /* process here, does not wait for more llc msgs */
1963 /* process here, does not wait for more llc msgs */
1974 (llc->raw.hdr.flags & SMC_LLC_FLAG_RESP)) {
1986 smc_llc_protocol_violation(lgr, llc->raw.hdr.common.type);
1993 /* worker to process llc messages on the event queue */
2022 /* process llc responses in tasklet context */
2066 static void smc_llc_enqueue(struct smc_link *link, union smc_llc_msg *llc)
2077 memcpy(&qentry->msg, llc, sizeof(union smc_llc_msg));
2080 if ((llc->raw.hdr.flags & SMC_LLC_FLAG_RESP) &&
2081 llc->raw.hdr.common.llc_type != SMC_LLC_REQ_ADD_LINK) {
2097 union smc_llc_msg *llc = buf;
2099 if (wc->byte_len < sizeof(*llc))
2101 if (!llc->raw.hdr.common.llc_version) {
2102 if (llc->raw.hdr.length != sizeof(*llc))
2105 if (llc->raw.hdr.length_v2 < sizeof(*llc))
2109 smc_llc_enqueue(link, llc);