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

Lines Matching refs:port

107 		 int port, const struct ib_wc *in_wc,
114 u32 in_modifier = port;
214 * Snoop SM MADs for port info, GUID info, and P_Key table sets, so we can
274 pr_debug("PKEY Change event: port=%d, "
351 " port %d, ix %d (%d)\n",
412 static int mlx4_ib_demux_sa_handler(struct ib_device *ibdev, int port, int slave,
420 ret = mlx4_ib_mcg_demux_handler(ibdev, port, slave, sa_mad);
428 int mlx4_ib_find_real_gid(struct ib_device *ibdev, u8 port, __be64 guid)
434 if (dev->sriov.demux[port - 1].guid_cache[i] == guid)
442 u8 port, u16 pkey, u16 *ix)
449 return ib_find_cached_pkey(&dev->ib_dev, port, pkey, ix);
451 unassigned_pkey_ix = dev->dev->phys_caps.pkey_phys_table_len[port] - 1;
453 for (i = 0; i < dev->dev->caps.pkey_table_len[port]; i++) {
454 if (dev->pkeys.virt2phys_pkey[slave][port - 1][i] == unassigned_pkey_ix)
457 pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][i];
459 ret = ib_get_cached_pkey(&dev->ib_dev, port, pkey_ix, &slot_pkey);
482 int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
500 u8 is_eth = dev->dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH;
505 tun_ctx = dev->sriov.demux[port-1].tun[slave];
519 ret = ib_get_cached_pkey(&dev->ib_dev, port, wc->pkey_index, &cached_pkey);
523 ret = find_slave_port_pkey_ix(dev, slave, port, cached_pkey, &pkey_ix);
528 tun_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0];
530 dqpn = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave + port + (dest_qpt * 2) - 1;
535 /* create ah. Just need an empty one with the port num for the post send.
538 attr.port_num = port;
579 if (mlx4_get_slave_default_vlan(dev->dev, port, slave, &vlan,
616 wr.port_num = port;
639 static int mlx4_ib_demux_mad(struct ib_device *ibdev, u8 port,
649 if (rdma_port_get_link_layer(ibdev, port) == IB_LINK_LAYER_INFINIBAND)
663 err = mlx4_get_slave_from_roce_gid(dev->dev, port, grh->dgid.raw, &slave);
665 other_port = (port == 1) ? 2 : 1;
668 port = other_port;
669 pr_debug("resolved slave %d from gid %pI6 wire port %d other %d\n",
670 slave, grh->dgid.raw, port, other_port);
683 if (mlx4_ib_demux_cm_handler(ibdev, port, NULL, mad))
686 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
706 slave = mlx4_ib_find_real_gid(ibdev, port, grh->dgid.global.interface_id);
718 if (!mlx4_vf_smi_enabled(dev->dev, slave, port))
730 if (mlx4_ib_demux_sa_handler(ibdev, port, slave,
735 if (mlx4_ib_demux_cm_handler(ibdev, port, &slave, mad))
757 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
1154 u8 port = eqe->event.port_mgmt_change.port;
1168 update_sm_ah(dev, port, lid, sl);
1173 handle_lid_change_event(dev, port);
1182 err = __mlx4_ib_query_gid(&dev->ib_dev, port, 0, &gid, 1);
1187 pr_warn("Could not change QP1 subnet prefix for port %d: query_gid error (%d)\n",
1188 port, err);
1190 pr_debug("Changing QP1 subnet prefix for port %d. old=0x%llx. new=0x%llx\n",
1191 port,
1192 (long long)atomic64_read(&dev->sriov.demux[port - 1].subnet_prefix),
1194 atomic64_set(&dev->sriov.demux[port - 1].subnet_prefix,
1198 mlx4_ib_dispatch_event(dev, port, IB_EVENT_GID_CHANGE);
1201 mlx4_gen_slaves_port_mgt_ev(dev->dev, port,
1206 handle_client_rereg_event(dev, port);
1210 mlx4_ib_dispatch_event(dev, port, IB_EVENT_PKEY_CHANGE);
1212 propagate_pkey_ev(dev, port, eqe);
1217 mlx4_ib_dispatch_event(dev, port, IB_EVENT_GID_CHANGE);
1222 handle_slaves_guid_change(dev, port, tbl_block, change_bitmap);
1239 atomic64_set(&dev->sl2vl[port - 1], sl2vl64.sl64);
1298 static int mlx4_ib_multiplex_sa_handler(struct ib_device *ibdev, int port,
1306 ret = mlx4_ib_mcg_multiplex_handler(ibdev, port, slave, sa_mad);
1322 int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port,
1342 sqp_ctx = dev->sriov.sqps[port-1];
1351 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0];
1355 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][pkey_index];
1401 wr.port_num = port;
1431 static int get_slave_base_gid_ix(struct mlx4_ib_dev *dev, int slave, int port)
1433 if (rdma_port_get_link_layer(&dev->ib_dev, port) == IB_LINK_LAYER_INFINIBAND)
1435 return mlx4_get_base_gid_ix(dev->dev, slave, port);
1438 static void fill_in_real_sgid_index(struct mlx4_ib_dev *dev, int slave, int port,
1441 if (rdma_port_get_link_layer(&dev->ib_dev, port) == IB_LINK_LAYER_INFINIBAND)
1444 ah_attr->grh.sgid_index += get_slave_base_gid_ix(dev, slave, port);
1457 int port;
1463 (wc->src_qp & 0x1) != ctx->port - 1 ||
1504 !mlx4_vf_smi_enabled(dev->dev, slave, ctx->port))
1508 if (mlx4_ib_multiplex_sa_handler(ctx->ib_dev, ctx->port, slave,
1513 if (mlx4_ib_multiplex_cm_handler(ctx->ib_dev, ctx->port, slave,
1536 port = be32_to_cpu(ah.av.ib.port_pd) >> 24;
1537 port = mlx4_slave_convert_port(dev->dev, slave, port);
1538 if (port < 0)
1540 ah.av.ib.port_pd = cpu_to_be32(port << 24 | (be32_to_cpu(ah.av.ib.port_pd) & 0xffffff));
1544 fill_in_real_sgid_index(dev, slave, ctx->port, &ah_attr);
1549 mlx4_get_slave_default_vlan(dev->dev, ctx->port, slave,
1552 mlx4_ib_send_to_wire(dev, slave, ctx->port,
1752 pr_err("Fatal error (%d) on a MAD QP on port %d\n",
1753 event->event, sqp->port);
1782 qp_init_attr.port = ctx->port;
1793 qp_init_attr.init_attr.port_num = ctx->port;
1810 ctx->port, IB_DEFAULT_PKEY_FULL,
1814 to_mdev(ctx->ib_dev)->pkeys.virt2phys_pkey[ctx->slave][ctx->port - 1][0];
1816 attr.port_num = ctx->port;
1889 mlx4_ib_demux_mad(ctx->ib_dev, ctx->port, &wc, grh, mad);
1916 static int alloc_pv_object(struct mlx4_ib_dev *dev, int slave, int port,
1925 "for port %d, slave %d\n", port, slave);
1930 ctx->port = port;
1936 static void free_pv_object(struct mlx4_ib_dev *dev, int slave, int port)
1938 if (dev->sriov.demux[port - 1].tun[slave]) {
1939 kfree(dev->sriov.demux[port - 1].tun[slave]);
1940 dev->sriov.demux[port - 1].tun[slave] = NULL;
1944 static int create_pv_resources(struct ib_device *ibdev, int slave, int port,
1955 if (rdma_port_get_link_layer(ibdev, ctx->port) ==
2014 ctx->wq = to_mdev(ibdev)->sriov.demux[port - 1].wq;
2054 static void destroy_pv_resources(struct mlx4_ib_dev *dev, int slave, int port,
2080 int port, int do_init)
2085 clean_vf_mcast(&dev->sriov.demux[port - 1], slave);
2088 destroy_pv_resources(dev, slave, port,
2089 dev->sriov.sqps[port - 1], 1);
2091 destroy_pv_resources(dev, slave, port,
2092 dev->sriov.demux[port - 1].tun[slave], 1);
2097 ret = create_pv_resources(&dev->ib_dev, slave, port, 1,
2098 dev->sriov.demux[port - 1].tun[slave]);
2102 ret = create_pv_resources(&dev->ib_dev, slave, port, 0,
2103 dev->sriov.sqps[port - 1]);
2112 mlx4_ib_tunnels_update(dmxw->dev, dmxw->slave, (int) dmxw->port,
2120 int port)
2132 ctx->port = port;
2142 if (!test_bit(port - 1, actv_ports.ports))
2145 ret = alloc_pv_object(dev, i, port, &ctx->tun[i]);
2158 snprintf(name, sizeof name, "mlx4_ibt%d", port);
2161 pr_err("Failed to create tunnelling WQ for port %d\n", port);
2166 snprintf(name, sizeof name, "mlx4_ibud%d", port);
2169 pr_err("Failed to create up/down WQ for port %d\n", port);
2184 free_pv_object(dev, i, port);
2225 destroy_pv_resources(dev, i, ctx->port, ctx->tun[i], 0);
2226 free_pv_object(dev, i, ctx->port);