Lines Matching refs:slave
313 int i, ix, slave, err; in __propagate_pkey_ev() local
316 for (slave = 0; slave < dev->dev->caps.sqp_demux; slave++) { in __propagate_pkey_ev()
317 if (slave == mlx4_master_func_num(dev->dev)) in __propagate_pkey_ev()
319 if (!mlx4_is_slave_active(dev->dev, slave)) in __propagate_pkey_ev()
328 if (dev->pkeys.virt2phys_pkey[slave][port_num - 1] in __propagate_pkey_ev()
330 err = mlx4_gen_pkey_eqe(dev->dev, slave, port_num); in __propagate_pkey_ev()
333 slave, port_num, ix, err); in __propagate_pkey_ev()
391 static int mlx4_ib_demux_sa_handler(struct ib_device *ibdev, int port, int slave, in mlx4_ib_demux_sa_handler() argument
399 ret = mlx4_ib_mcg_demux_handler(ibdev, port, slave, sa_mad); in mlx4_ib_demux_sa_handler()
420 static int find_slave_port_pkey_ix(struct mlx4_ib_dev *dev, int slave, in find_slave_port_pkey_ix() argument
427 if (slave == mlx4_master_func_num(dev->dev)) in find_slave_port_pkey_ix()
433 if (dev->pkeys.virt2phys_pkey[slave][port - 1][i] == unassigned_pkey_ix) in find_slave_port_pkey_ix()
436 pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][i]; in find_slave_port_pkey_ix()
461 int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port, in mlx4_ib_send_to_slave() argument
483 tun_ctx = dev->sriov.demux[port-1].tun[slave]; in mlx4_ib_send_to_slave()
501 ret = find_slave_port_pkey_ix(dev, slave, port, cached_pkey, &pkey_ix); in mlx4_ib_send_to_slave()
506 tun_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0]; in mlx4_ib_send_to_slave()
508 dqpn = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave + port + (dest_qpt * 2) - 1; in mlx4_ib_send_to_slave()
557 if (mlx4_get_slave_default_vlan(dev->dev, port, slave, &vlan, in mlx4_ib_send_to_slave()
615 int slave; in mlx4_ib_demux_mad() local
633 if (mlx4_get_slave_from_roce_gid(dev->dev, port, grh->dgid.raw, &slave)) { in mlx4_ib_demux_mad()
637 if (slave >= dev->dev->caps.sqp_demux) { in mlx4_ib_demux_mad()
639 slave, dev->dev->caps.sqp_demux); in mlx4_ib_demux_mad()
646 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad); in mlx4_ib_demux_mad()
649 slave, err); in mlx4_ib_demux_mad()
654 slave = mlx4_master_func_num(dev->dev); in mlx4_ib_demux_mad()
659 slave = *slave_id; in mlx4_ib_demux_mad()
660 if (slave != 255) /*255 indicates the dom0*/ in mlx4_ib_demux_mad()
666 slave = mlx4_ib_find_real_gid(ibdev, port, grh->dgid.global.interface_id); in mlx4_ib_demux_mad()
667 if (slave < 0) { in mlx4_ib_demux_mad()
677 if (slave != 255 && slave != mlx4_master_func_num(dev->dev)) { in mlx4_ib_demux_mad()
678 if (!mlx4_vf_smi_enabled(dev->dev, slave, port)) in mlx4_ib_demux_mad()
683 slave, mad->mad_hdr.mgmt_class, in mlx4_ib_demux_mad()
690 if (mlx4_ib_demux_sa_handler(ibdev, port, slave, in mlx4_ib_demux_mad()
695 if (mlx4_ib_demux_cm_handler(ibdev, port, &slave, mad)) in mlx4_ib_demux_mad()
704 if (slave != mlx4_master_func_num(dev->dev)) { in mlx4_ib_demux_mad()
706 "for slave:%d\n", mad->mad_hdr.mgmt_class, slave); in mlx4_ib_demux_mad()
711 if (slave >= dev->dev->caps.sqp_demux) { in mlx4_ib_demux_mad()
713 slave, dev->dev->caps.sqp_demux); in mlx4_ib_demux_mad()
717 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad); in mlx4_ib_demux_mad()
720 slave, err); in mlx4_ib_demux_mad()
1143 int slave, struct ib_sa_mad *sa_mad) in mlx4_ib_multiplex_sa_handler() argument
1150 ret = mlx4_ib_mcg_multiplex_handler(ibdev, port, slave, sa_mad); in mlx4_ib_multiplex_sa_handler()
1158 static int is_proxy_qp0(struct mlx4_ib_dev *dev, int qpn, int slave) in is_proxy_qp0() argument
1160 int proxy_start = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave; in is_proxy_qp0()
1166 int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port, in mlx4_ib_send_to_wire() argument
1194 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0]; in mlx4_ib_send_to_wire()
1198 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][pkey_index]; in mlx4_ib_send_to_wire()
1265 static int get_slave_base_gid_ix(struct mlx4_ib_dev *dev, int slave, int port) in get_slave_base_gid_ix() argument
1268 return slave; in get_slave_base_gid_ix()
1269 return mlx4_get_base_gid_ix(dev->dev, slave, port); in get_slave_base_gid_ix()
1272 static void fill_in_real_sgid_index(struct mlx4_ib_dev *dev, int slave, int port, in fill_in_real_sgid_index() argument
1276 ah_attr->grh.sgid_index = slave; in fill_in_real_sgid_index()
1278 ah_attr->grh.sgid_index += get_slave_base_gid_ix(dev, slave, port); in fill_in_real_sgid_index()
1290 int slave; in mlx4_ib_multiplex_mad() local
1301 slave = ((wc->src_qp & ~0x7) - dev->dev->phys_caps.base_proxy_sqpn) / 8; in mlx4_ib_multiplex_mad()
1302 if (slave != ctx->slave) { in mlx4_ib_multiplex_mad()
1324 tunnel->mad.mad_hdr.mgmt_class, slave); in mlx4_ib_multiplex_mad()
1327 *slave_id = slave; in mlx4_ib_multiplex_mad()
1336 if (slave != mlx4_master_func_num(dev->dev) && in mlx4_ib_multiplex_mad()
1337 !mlx4_vf_smi_enabled(dev->dev, slave, ctx->port)) in mlx4_ib_multiplex_mad()
1341 if (mlx4_ib_multiplex_sa_handler(ctx->ib_dev, ctx->port, slave, in mlx4_ib_multiplex_mad()
1346 if (mlx4_ib_multiplex_cm_handler(ctx->ib_dev, ctx->port, slave, in mlx4_ib_multiplex_mad()
1357 if (slave != mlx4_master_func_num(dev->dev)) { in mlx4_ib_multiplex_mad()
1359 "for slave:%d\n", tunnel->mad.mad_hdr.mgmt_class, slave); in mlx4_ib_multiplex_mad()
1370 fill_in_real_sgid_index(dev, slave, ctx->port, &ah_attr); in mlx4_ib_multiplex_mad()
1372 port = mlx4_slave_convert_port(dev->dev, slave, ah_attr.port_num); in mlx4_ib_multiplex_mad()
1379 mlx4_get_slave_default_vlan(dev->dev, ctx->port, slave, in mlx4_ib_multiplex_mad()
1382 mlx4_ib_send_to_wire(dev, slave, ctx->port, in mlx4_ib_multiplex_mad()
1383 is_proxy_qp0(dev, wc->src_qp, slave) ? in mlx4_ib_multiplex_mad()
1563 ctx->slave, wc.status, wc.wr_id); in mlx4_ib_tunnel_comp_worker()
1612 qp_init_attr.slave = ctx->slave; in create_pv_sqp()
1637 ret = find_slave_port_pkey_ix(to_mdev(ctx->ib_dev), ctx->slave, in create_pv_sqp()
1642 to_mdev(ctx->ib_dev)->pkeys.virt2phys_pkey[ctx->slave][ctx->port - 1][0]; in create_pv_sqp()
1730 ctx->slave, wc.status, wc.wr_id); in mlx4_ib_sqp_comp_worker()
1744 static int alloc_pv_object(struct mlx4_ib_dev *dev, int slave, int port, in alloc_pv_object() argument
1753 "for port %d, slave %d\n", port, slave); in alloc_pv_object()
1759 ctx->slave = slave; in alloc_pv_object()
1764 static void free_pv_object(struct mlx4_ib_dev *dev, int slave, int port) in free_pv_object() argument
1766 if (dev->sriov.demux[port - 1].tun[slave]) { in free_pv_object()
1767 kfree(dev->sriov.demux[port - 1].tun[slave]); in free_pv_object()
1768 dev->sriov.demux[port - 1].tun[slave] = NULL; in free_pv_object()
1772 static int create_pv_resources(struct ib_device *ibdev, int slave, int port, in create_pv_resources() argument
1891 static void destroy_pv_resources(struct mlx4_ib_dev *dev, int slave, int port, in destroy_pv_resources() argument
1918 static int mlx4_ib_tunnels_update(struct mlx4_ib_dev *dev, int slave, in mlx4_ib_tunnels_update() argument
1924 clean_vf_mcast(&dev->sriov.demux[port - 1], slave); in mlx4_ib_tunnels_update()
1926 if (slave == mlx4_master_func_num(dev->dev)) in mlx4_ib_tunnels_update()
1927 destroy_pv_resources(dev, slave, port, in mlx4_ib_tunnels_update()
1930 destroy_pv_resources(dev, slave, port, in mlx4_ib_tunnels_update()
1931 dev->sriov.demux[port - 1].tun[slave], 1); in mlx4_ib_tunnels_update()
1936 ret = create_pv_resources(&dev->ib_dev, slave, port, 1, in mlx4_ib_tunnels_update()
1937 dev->sriov.demux[port - 1].tun[slave]); in mlx4_ib_tunnels_update()
1940 if (!ret && slave == mlx4_master_func_num(dev->dev)) in mlx4_ib_tunnels_update()
1941 ret = create_pv_resources(&dev->ib_dev, slave, port, 0, in mlx4_ib_tunnels_update()
1951 mlx4_ib_tunnels_update(dmxw->dev, dmxw->slave, (int) dmxw->port, in mlx4_ib_tunnels_update_work()