• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/mlx4/mlx4_ib/

Lines Matching defs:sqp

649 	struct mlx4_ib_sqp *sqp;
700 sqp = kzalloc(sizeof (struct mlx4_ib_sqp), gfp);
701 if (!sqp)
703 qp = &sqp->qp;
1254 struct mlx4_ib_sqp *sqp = to_msqp((to_mqp(ibqp)));
1260 sqp->roce_v2_gsi = ib_create_qp(pd, init_attr);
1262 if (IS_ERR(sqp->roce_v2_gsi)) {
1263 pr_err("Failed to create GSI QP for RoCEv2 (%ld)\n", PTR_ERR(sqp->roce_v2_gsi));
1264 sqp->roce_v2_gsi = NULL;
1266 sqp = to_msqp(to_mqp(sqp->roce_v2_gsi));
1267 sqp->qp.flags |= MLX4_IB_ROCE_V2_GSI_QP;
1310 struct mlx4_ib_sqp *sqp = to_msqp(mqp);
1312 if (sqp->roce_v2_gsi)
1313 ib_destroy_qp(sqp->roce_v2_gsi);
1373 static void store_sqp_attrs(struct mlx4_ib_sqp *sqp, const struct ib_qp_attr *attr,
1377 sqp->pkey_index = attr->pkey_index;
1379 sqp->qkey = attr->qkey;
1381 sqp->send_psn = attr->sq_psn;
2272 struct mlx4_ib_sqp *sqp = to_msqp(mqp);
2275 if (sqp->roce_v2_gsi)
2276 err = ib_modify_qp(sqp->roce_v2_gsi, attr, attr_mask);
2297 static int build_sriov_qp0_header(struct mlx4_ib_sqp *sqp,
2301 struct mlx4_ib_dev *mdev = to_mdev(sqp->qp.ibqp.device);
2323 if (sqp->qp.mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_SMI_OWNER)
2326 ib_ud_header_init(send_size, 1, 0, 0, 0, 0, 0, 0, &sqp->ud_header);
2328 if (sqp->qp.mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_SMI_OWNER) {
2329 sqp->ud_header.lrh.service_level =
2331 sqp->ud_header.lrh.destination_lid =
2333 sqp->ud_header.lrh.source_lid =
2341 mlx->rlid = sqp->ud_header.lrh.destination_lid;
2343 sqp->ud_header.lrh.virtual_lane = 0;
2344 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
2345 ib_get_cached_pkey(ib_dev, sqp->qp.port, 0, &pkey);
2346 sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
2347 if (sqp->qp.mlx4_ib_qp_type == MLX4_IB_QPT_TUN_SMI_OWNER)
2348 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
2350 sqp->ud_header.bth.destination_qpn =
2351 cpu_to_be32(mdev->dev->caps.qp0_tunnel[sqp->qp.port - 1]);
2353 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
2355 if (mlx4_get_parav_qkey(mdev->dev, sqp->qp.mqp.qpn, &qkey))
2358 if (vf_get_qp0_qkey(mdev->dev, sqp->qp.mqp.qpn, &qkey))
2361 sqp->ud_header.deth.qkey = cpu_to_be32(qkey);
2362 sqp->ud_header.deth.source_qpn = cpu_to_be32(sqp->qp.mqp.qpn);
2364 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY;
2365 sqp->ud_header.immediate_present = 0;
2367 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf);
2379 memcpy(inl + 1, sqp->header_buf, header_size);
2383 memcpy(inl + 1, sqp->header_buf, spc);
2386 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc);
2427 static int build_mlx_header(struct mlx4_ib_sqp *sqp, struct ib_ud_wr *wr,
2430 struct ib_device *ib_dev = sqp->qp.ibqp.device;
2453 is_eth = rdma_port_get_link_layer(sqp->qp.ibqp.device, sqp->qp.port) == IB_LINK_LAYER_ETHERNET;
2497 ip_version, is_udp, 0, &sqp->ud_header);
2502 sqp->ud_header.lrh.service_level =
2504 sqp->ud_header.lrh.destination_lid = ah->av.ib.dlid;
2505 sqp->ud_header.lrh.source_lid = cpu_to_be16(ah->av.ib.g_slid & 0x7f);
2509 sqp->ud_header.grh.traffic_class =
2511 sqp->ud_header.grh.flow_label =
2513 sqp->ud_header.grh.hop_limit = ah->av.ib.hop_limit;
2515 memcpy(sqp->ud_header.grh.source_gid.raw, sgid.raw, 16);
2522 sqp->ud_header.grh.source_gid.global.subnet_prefix =
2524 demux[sqp->qp.port - 1].
2526 sqp->ud_header.grh.source_gid.global.interface_id =
2527 to_mdev(ib_dev)->sriov.demux[sqp->qp.port - 1].
2533 &sqp->ud_header.grh.source_gid, NULL);
2536 memcpy(sqp->ud_header.grh.destination_gid.raw,
2541 sqp->ud_header.ip4.tos =
2543 sqp->ud_header.ip4.id = 0;
2544 sqp->ud_header.ip4.frag_off = htons(IP_DF);
2545 sqp->ud_header.ip4.ttl = ah->av.eth.hop_limit;
2547 memcpy(&sqp->ud_header.ip4.saddr,
2549 memcpy(&sqp->ud_header.ip4.daddr, ah->av.ib.dgid + 12, 4);
2550 sqp->ud_header.ip4.check = ib_ud_ip4_csum(&sqp->ud_header);
2554 sqp->ud_header.udp.dport = htons(ROCE_V2_UDP_DPORT);
2555 sqp->ud_header.udp.sport = htons(MLX4_ROCEV2_QP1_SPORT);
2556 sqp->ud_header.udp.csum = 0;
2562 mlx->flags |= cpu_to_be32((!sqp->qp.ibqp.qp_num ? MLX4_WQE_MLX_VL15 : 0) |
2563 (sqp->ud_header.lrh.destination_lid ==
2565 (sqp->ud_header.lrh.service_level << 8));
2568 mlx->rlid = sqp->ud_header.lrh.destination_lid;
2573 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY;
2574 sqp->ud_header.immediate_present = 0;
2577 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE;
2578 sqp->ud_header.immediate_present = 1;
2579 sqp->ud_header.immediate_data = wr->wr.ex.imm_data;
2595 ether_addr_copy(sqp->ud_header.eth.smac_h, ah->av.eth.s_mac);
2596 memcpy(sqp->ud_header.eth.dmac_h, ah->av.eth.mac, 6);
2602 if (!memcmp(sqp->ud_header.eth.smac_h, sqp->ud_header.eth.dmac_h, 6))
2605 sqp->ud_header.eth.type = cpu_to_be16(ether_type);
2607 sqp->ud_header.vlan.type = cpu_to_be16(ether_type);
2608 sqp->ud_header.vlan.tag = cpu_to_be16(vlan | pcp);
2611 sqp->ud_header.lrh.virtual_lane = !sqp->qp.ibqp.qp_num ? 15 :
2613 sqp->ud_header.lrh.service_level,
2614 sqp->qp.port);
2615 if (sqp->qp.ibqp.qp_num && sqp->ud_header.lrh.virtual_lane == 15)
2617 if (sqp->ud_header.lrh.destination_lid == IB_LID_PERMISSIVE)
2618 sqp->ud_header.lrh.source_lid = IB_LID_PERMISSIVE;
2620 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
2621 if (!sqp->qp.ibqp.qp_num)
2622 ib_get_cached_pkey(ib_dev, sqp->qp.port, sqp->pkey_index, &pkey);
2624 ib_get_cached_pkey(ib_dev, sqp->qp.port, wr->pkey_index, &pkey);
2625 sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
2626 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
2627 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
2628 sqp->ud_header.deth.qkey = cpu_to_be32(wr->remote_qkey & 0x80000000 ?
2629 sqp->qkey : wr->remote_qkey);
2630 sqp->ud_header.deth.source_qpn = cpu_to_be32(sqp->qp.ibqp.qp_num);
2632 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf);
2640 be32_to_cpu(((__be32 *) sqp->header_buf)[i]));
2657 memcpy(inl + 1, sqp->header_buf, header_size);
2661 memcpy(inl + 1, sqp->header_buf, spc);
2664 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc);
2953 struct mlx4_ib_sqp *sqp = to_msqp(qp);
2955 if (sqp->roce_v2_gsi) {
2967 to_mqp(sqp->roce_v2_gsi) : qp;