Lines Matching refs:port

106 		 int port, struct ib_wc *in_wc, struct ib_grh *in_grh,
112 u32 in_modifier = port;
212 * Snoop SM MADs for port info, GUID info, and P_Key table sets, so we can
268 pr_debug("PKEY Change event: port=%d, "
324 " port %d, ix %d (%d)\n",
383 static int mlx4_ib_demux_sa_handler(struct ib_device *ibdev, int port, int slave,
391 ret = mlx4_ib_mcg_demux_handler(ibdev, port, slave, sa_mad);
399 int mlx4_ib_find_real_gid(struct ib_device *ibdev, u8 port, __be64 guid)
405 if (dev->sriov.demux[port - 1].guid_cache[i] == guid)
413 u8 port, u16 pkey, u16 *ix)
420 return ib_find_cached_pkey(&dev->ib_dev, port, pkey, ix);
422 unassigned_pkey_ix = dev->dev->phys_caps.pkey_phys_table_len[port] - 1;
424 for (i = 0; i < dev->dev->caps.pkey_table_len[port]; i++) {
425 if (dev->pkeys.virt2phys_pkey[slave][port - 1][i] == unassigned_pkey_ix)
428 pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][i];
430 ret = ib_get_cached_pkey(&dev->ib_dev, port, pkey_ix, &slot_pkey);
453 int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
470 u8 is_eth = dev->dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH;
475 tun_ctx = dev->sriov.demux[port-1].tun[slave];
493 ret = ib_get_cached_pkey(&dev->ib_dev, port, wc->pkey_index, &cached_pkey);
497 ret = find_slave_port_pkey_ix(dev, slave, port, cached_pkey, &pkey_ix);
502 tun_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0];
504 dqpn = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave + port + (dest_qpt * 2) - 1;
509 /* create ah. Just need an empty one with the port num for the post send.
512 attr.port_num = port;
563 wr.wr.ud.port_num = port;
580 static int mlx4_ib_demux_mad(struct ib_device *ibdev, u8 port,
590 if (rdma_port_get_link_layer(ibdev, port) == IB_LINK_LAYER_INFINIBAND)
604 if (mlx4_get_slave_from_roce_gid(dev->dev, port, grh->dgid.raw, &slave)) {
614 if (mlx4_ib_demux_cm_handler(ibdev, port, &slave, mad, is_eth))
617 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
637 slave = mlx4_ib_find_real_gid(ibdev, port, grh->dgid.global.interface_id);
646 if (mlx4_ib_demux_sa_handler(ibdev, port, slave,
651 if (mlx4_ib_demux_cm_handler(ibdev, port, &slave, mad, is_eth))
673 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
1167 u8 port = eqe->event.port_mgmt_change.port;
1181 update_sm_ah(dev, port, lid, sl);
1186 handle_lid_change_event(dev, port);
1190 mlx4_ib_dispatch_event(dev, port, IB_EVENT_GID_CHANGE);
1193 mlx4_gen_slaves_port_mgt_ev(dev->dev, port,
1198 handle_client_rereg_event(dev, port);
1202 mlx4_ib_dispatch_event(dev, port, IB_EVENT_PKEY_CHANGE);
1204 propagate_pkey_ev(dev, port, eqe);
1209 mlx4_ib_dispatch_event(dev, port, IB_EVENT_GID_CHANGE);
1214 handle_slaves_guid_change(dev, port, tbl_block, change_bitmap);
1273 static int mlx4_ib_multiplex_sa_handler(struct ib_device *ibdev, int port,
1281 ret = mlx4_ib_mcg_multiplex_handler(ibdev, port, slave, sa_mad);
1297 int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port,
1315 sqp_ctx = dev->sriov.sqps[port-1];
1328 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0];
1332 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][pkey_index];
1378 wr.wr.ud.port_num = port;
1396 static int get_slave_base_gid_ix(struct mlx4_ib_dev *dev, int slave, int port)
1401 if (rdma_port_get_link_layer(&dev->ib_dev, port) == IB_LINK_LAYER_INFINIBAND)
1415 static int get_real_sgid_index(struct mlx4_ib_dev *dev, int slave, int port,
1418 if (rdma_port_get_link_layer(&dev->ib_dev, port) == IB_LINK_LAYER_INFINIBAND) {
1422 ah_attr->grh.sgid_index += get_slave_base_gid_ix(dev, slave, port);
1440 (wc->src_qp & 0x1) != ctx->port - 1 ||
1484 if (mlx4_ib_multiplex_sa_handler(ctx->ib_dev, ctx->port, slave,
1489 if (mlx4_ib_multiplex_cm_handler(ctx->ib_dev, ctx->port, slave,
1513 if (get_real_sgid_index(dev, slave, ctx->port, &ah_attr))
1516 mlx4_ib_send_to_wire(dev, slave, ctx->port,
1707 pr_err("Fatal error (%d) on a MAD QP on port %d\n",
1708 event->event, sqp->port);
1736 qp_init_attr.port = ctx->port;
1746 qp_init_attr.init_attr.port_num = ctx->port;
1761 to_mdev(ctx->ib_dev)->pkeys.virt2phys_pkey[ctx->slave][ctx->port - 1][0];
1763 attr.port_num = ctx->port;
1836 mlx4_ib_demux_mad(ctx->ib_dev, ctx->port, &wc, grh, mad);
1863 static int alloc_pv_object(struct mlx4_ib_dev *dev, int slave, int port,
1872 "for port %d, slave %d\n", port, slave);
1877 ctx->port = port;
1883 static void free_pv_object(struct mlx4_ib_dev *dev, int slave, int port)
1885 if (dev->sriov.demux[port - 1].tun[slave]) {
1886 kfree(dev->sriov.demux[port - 1].tun[slave]);
1887 dev->sriov.demux[port - 1].tun[slave] = NULL;
1891 static int create_pv_resources(struct ib_device *ibdev, int slave, int port,
1900 /* have QP0 only on port owner, and only if link layer is IB */
1902 rdma_port_get_link_layer(ibdev, ctx->port) == IB_LINK_LAYER_INFINIBAND)
1966 ctx->wq = to_mdev(ibdev)->sriov.demux[port - 1].wq;
2010 static void destroy_pv_resources(struct mlx4_ib_dev *dev, int slave, int port,
2038 int port, int do_init)
2043 clean_vf_mcast(&dev->sriov.demux[port - 1], slave);
2046 destroy_pv_resources(dev, slave, port,
2047 dev->sriov.sqps[port - 1], 1);
2049 destroy_pv_resources(dev, slave, port,
2050 dev->sriov.demux[port - 1].tun[slave], 1);
2055 ret = create_pv_resources(&dev->ib_dev, slave, port, 1,
2056 dev->sriov.demux[port - 1].tun[slave]);
2060 ret = create_pv_resources(&dev->ib_dev, slave, port, 0,
2061 dev->sriov.sqps[port - 1]);
2070 mlx4_ib_tunnels_update(dmxw->dev, dmxw->slave, (int) dmxw->port,
2078 int port)
2090 ctx->port = port;
2094 ret = alloc_pv_object(dev, i, port, &ctx->tun[i]);
2107 snprintf(name, sizeof name, "mlx4_ibt%d", port);
2110 pr_err("Failed to create tunnelling WQ for port %d\n", port);
2115 snprintf(name, sizeof name, "mlx4_ibud%d", port);
2118 pr_err("Failed to create up/down WQ for port %d\n", port);
2133 free_pv_object(dev, i, port);
2176 destroy_pv_resources(dev, i, ctx->port, ctx->tun[i], 0);
2177 free_pv_object(dev, i, ctx->port);