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,
1032 struct smc_llc_msg_add_link *llc = &qentry->msg.add_link;
1039 if (!llc->qp_mtu)
1057 ini->smcrv2.daddr = smc_ib_gid_to_ipv4(llc->sender_gid);
1060 if (!memcmp(llc->sender_gid, link->peer_gid, SMC_GID_SIZE) &&
1062 !memcmp(llc->sender_mac, link->peer_mac, ETH_ALEN))) {
1083 smc_llc_save_add_link_info(lnk_new, llc);
1084 lnk_new->link_id = llc->link_num; /* SMC server assigns link id */
1125 struct smc_llc_msg_req_add_link_v2 *llc;
1144 llc = (struct smc_llc_msg_req_add_link_v2 *)wr_buf;
1145 memset(llc, 0, SMC_WR_TX_SIZE);
1147 llc->hd.common.llc_type = SMC_LLC_REQ_ADD_LINK;
1149 memcpy(llc->gid[i], gidlist.list[i], sizeof(gidlist.list[0]));
1150 llc->gid_cnt = gidlist.len;
1151 len = sizeof(*llc) + (gidlist.len * sizeof(gidlist.list[0]));
1152 smc_llc_init_msg_hdr(&llc->hd, link->lgr, len);
1196 static bool smc_llc_is_empty_llc_message(union smc_llc_msg *llc)
1200 for (i = 0; i < ARRAY_SIZE(llc->raw.data); i++)
1201 if (llc->raw.data[i])
1206 static bool smc_llc_is_local_add_link(union smc_llc_msg *llc)
1208 if (llc->raw.hdr.common.llc_type == SMC_LLC_ADD_LINK &&
1209 smc_llc_is_empty_llc_message(llc))
1757 struct smc_llc_msg_confirm_rkey *llc;
1765 llc = &qentry->msg.confirm_rkey;
1768 num_entries = llc->rtoken[0].num_rkeys;
1773 llc->rtoken[0].rmb_vaddr,
1774 llc->rtoken[0].rmb_key);
1779 smc_rtoken_set2(lgr, rk_idx, llc->rtoken[i].link_id,
1780 llc->rtoken[i].rmb_vaddr,
1781 llc->rtoken[i].rmb_key);
1785 llc->hd.flags |= SMC_LLC_FLAG_RKEY_NEG;
1786 llc->hd.flags |= SMC_LLC_FLAG_RKEY_RETRY;
1788 llc->hd.flags |= SMC_LLC_FLAG_RESP;
1789 smc_llc_init_msg_hdr(&llc->hd, link->lgr, sizeof(*llc));
1797 struct smc_llc_msg_delete_rkey *llc;
1804 llc = &qentry->msg.delete_rkey;
1810 memcpy(lgr->wr_rx_buf_v2, llc, sizeof(*llc));
1819 memset(&llc->rkey[0], 0, sizeof(llc->rkey));
1820 memset(&llc->reserved2, 0, sizeof(llc->reserved2));
1821 smc_llc_init_msg_hdr(&llc->hd, link->lgr, sizeof(*llc));
1823 llc->hd.flags |= SMC_LLC_FLAG_RKEY_NEG;
1824 llc->err_mask = llcv2->num_inval_rkeys;
1829 max = min_t(u8, llc->num_rkeys, SMC_LLC_DEL_RKEY_MAX);
1831 if (smc_rtoken_delete(link, llc->rkey[i]))
1835 llc->hd.flags |= SMC_LLC_FLAG_RKEY_NEG;
1836 llc->err_mask = err_mask;
1839 llc->hd.flags |= SMC_LLC_FLAG_RESP;
1853 /* flush the llc event queue */
1868 union smc_llc_msg *llc = &qentry->msg;
1875 switch (llc->raw.hdr.common.llc_type) {
1877 llc->test_link.hd.flags |= SMC_LLC_FLAG_RESP;
1878 smc_llc_send_message(link, llc);
1884 if (smc_llc_is_local_add_link(llc)) {
1941 /* process here, does not wait for more llc msgs */
1954 /* process here, does not wait for more llc msgs */
1965 (llc->raw.hdr.flags & SMC_LLC_FLAG_RESP)) {
1977 smc_llc_protocol_violation(lgr, llc->raw.hdr.common.type);
1984 /* worker to process llc messages on the event queue */
2013 /* process llc responses in tasklet context */
2057 static void smc_llc_enqueue(struct smc_link *link, union smc_llc_msg *llc)
2068 memcpy(&qentry->msg, llc, sizeof(union smc_llc_msg));
2071 if ((llc->raw.hdr.flags & SMC_LLC_FLAG_RESP) &&
2072 llc->raw.hdr.common.llc_type != SMC_LLC_REQ_ADD_LINK) {
2088 union smc_llc_msg *llc = buf;
2090 if (wc->byte_len < sizeof(*llc))
2092 if (!llc->raw.hdr.common.llc_version) {
2093 if (llc->raw.hdr.length != sizeof(*llc))
2096 if (llc->raw.hdr.length_v2 < sizeof(*llc))
2100 smc_llc_enqueue(link, llc);