Lines Matching refs:slave
306 int i, ix, slave, err; in __propagate_pkey_ev() local
309 for (slave = 0; slave < dev->dev->caps.sqp_demux; slave++) { in __propagate_pkey_ev()
310 if (slave == mlx4_master_func_num(dev->dev)) in __propagate_pkey_ev()
312 if (!mlx4_is_slave_active(dev->dev, slave)) in __propagate_pkey_ev()
321 if (dev->pkeys.virt2phys_pkey[slave][port_num - 1] in __propagate_pkey_ev()
323 err = mlx4_gen_pkey_eqe(dev->dev, slave, port_num); in __propagate_pkey_ev()
326 slave, port_num, ix, err); in __propagate_pkey_ev()
385 static int mlx4_ib_demux_sa_handler(struct ib_device *ibdev, int port, int slave, in mlx4_ib_demux_sa_handler() argument
393 ret = mlx4_ib_mcg_demux_handler(ibdev, port, slave, sa_mad); in mlx4_ib_demux_sa_handler()
414 static int find_slave_port_pkey_ix(struct mlx4_ib_dev *dev, int slave, in find_slave_port_pkey_ix() argument
421 if (slave == mlx4_master_func_num(dev->dev)) in find_slave_port_pkey_ix()
427 if (dev->pkeys.virt2phys_pkey[slave][port - 1][i] == unassigned_pkey_ix) in find_slave_port_pkey_ix()
430 pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][i]; in find_slave_port_pkey_ix()
455 int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port, in mlx4_ib_send_to_slave() argument
478 tun_ctx = dev->sriov.demux[port-1].tun[slave]; in mlx4_ib_send_to_slave()
496 ret = find_slave_port_pkey_ix(dev, slave, port, cached_pkey, &pkey_ix); in mlx4_ib_send_to_slave()
501 tun_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0]; in mlx4_ib_send_to_slave()
503 dqpn = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave + port + (dest_qpt * 2) - 1; in mlx4_ib_send_to_slave()
552 if (mlx4_get_slave_default_vlan(dev->dev, port, slave, &vlan, in mlx4_ib_send_to_slave()
610 int slave; in mlx4_ib_demux_mad() local
628 if (mlx4_get_slave_from_roce_gid(dev->dev, port, grh->dgid.raw, &slave)) { in mlx4_ib_demux_mad()
632 if (slave >= dev->dev->caps.sqp_demux) { in mlx4_ib_demux_mad()
634 slave, dev->dev->caps.sqp_demux); in mlx4_ib_demux_mad()
641 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad); in mlx4_ib_demux_mad()
644 slave, err); in mlx4_ib_demux_mad()
649 slave = mlx4_master_func_num(dev->dev); in mlx4_ib_demux_mad()
654 slave = *slave_id; in mlx4_ib_demux_mad()
655 if (slave != 255) /*255 indicates the dom0*/ in mlx4_ib_demux_mad()
661 slave = mlx4_ib_find_real_gid(ibdev, port, grh->dgid.global.interface_id); in mlx4_ib_demux_mad()
662 if (slave < 0) { in mlx4_ib_demux_mad()
672 if (slave != 255 && slave != mlx4_master_func_num(dev->dev)) { in mlx4_ib_demux_mad()
673 if (!mlx4_vf_smi_enabled(dev->dev, slave, port)) in mlx4_ib_demux_mad()
678 slave, mad->mad_hdr.mgmt_class, in mlx4_ib_demux_mad()
685 if (mlx4_ib_demux_sa_handler(ibdev, port, slave, in mlx4_ib_demux_mad()
690 if (mlx4_ib_demux_cm_handler(ibdev, port, &slave, mad)) in mlx4_ib_demux_mad()
699 if (slave != mlx4_master_func_num(dev->dev)) { in mlx4_ib_demux_mad()
701 "for slave:%d\n", mad->mad_hdr.mgmt_class, slave); in mlx4_ib_demux_mad()
706 if (slave >= dev->dev->caps.sqp_demux) { in mlx4_ib_demux_mad()
708 slave, dev->dev->caps.sqp_demux); in mlx4_ib_demux_mad()
712 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad); in mlx4_ib_demux_mad()
715 slave, err); in mlx4_ib_demux_mad()
1161 int slave, struct ib_sa_mad *sa_mad) in mlx4_ib_multiplex_sa_handler() argument
1168 ret = mlx4_ib_mcg_multiplex_handler(ibdev, port, slave, sa_mad); in mlx4_ib_multiplex_sa_handler()
1176 static int is_proxy_qp0(struct mlx4_ib_dev *dev, int qpn, int slave) in is_proxy_qp0() argument
1178 int proxy_start = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave; in is_proxy_qp0()
1184 int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u8 port, in mlx4_ib_send_to_wire() argument
1213 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0]; in mlx4_ib_send_to_wire()
1217 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][pkey_index]; in mlx4_ib_send_to_wire()
1287 static int get_slave_base_gid_ix(struct mlx4_ib_dev *dev, int slave, int port) in get_slave_base_gid_ix() argument
1290 return slave; in get_slave_base_gid_ix()
1291 return mlx4_get_base_gid_ix(dev->dev, slave, port); in get_slave_base_gid_ix()
1294 static void fill_in_real_sgid_index(struct mlx4_ib_dev *dev, int slave, int port, in fill_in_real_sgid_index() argument
1298 ah_attr->grh.sgid_index = slave; in fill_in_real_sgid_index()
1300 ah_attr->grh.sgid_index += get_slave_base_gid_ix(dev, slave, port); in fill_in_real_sgid_index()
1312 int slave; in mlx4_ib_multiplex_mad() local
1324 slave = ((wc->src_qp & ~0x7) - dev->dev->phys_caps.base_proxy_sqpn) / 8; in mlx4_ib_multiplex_mad()
1325 if (slave != ctx->slave) { in mlx4_ib_multiplex_mad()
1347 tunnel->mad.mad_hdr.mgmt_class, slave); in mlx4_ib_multiplex_mad()
1350 *slave_id = slave; in mlx4_ib_multiplex_mad()
1359 if (slave != mlx4_master_func_num(dev->dev) && in mlx4_ib_multiplex_mad()
1360 !mlx4_vf_smi_enabled(dev->dev, slave, ctx->port)) in mlx4_ib_multiplex_mad()
1364 if (mlx4_ib_multiplex_sa_handler(ctx->ib_dev, ctx->port, slave, in mlx4_ib_multiplex_mad()
1369 if (mlx4_ib_multiplex_cm_handler(ctx->ib_dev, ctx->port, slave, in mlx4_ib_multiplex_mad()
1380 if (slave != mlx4_master_func_num(dev->dev)) { in mlx4_ib_multiplex_mad()
1382 "for slave:%d\n", tunnel->mad.mad_hdr.mgmt_class, slave); in mlx4_ib_multiplex_mad()
1393 port = mlx4_slave_convert_port(dev->dev, slave, port); in mlx4_ib_multiplex_mad()
1400 fill_in_real_sgid_index(dev, slave, ctx->port, &ah_attr); in mlx4_ib_multiplex_mad()
1405 mlx4_get_slave_default_vlan(dev->dev, ctx->port, slave, in mlx4_ib_multiplex_mad()
1408 mlx4_ib_send_to_wire(dev, slave, ctx->port, in mlx4_ib_multiplex_mad()
1409 is_proxy_qp0(dev, wc->src_qp, slave) ? in mlx4_ib_multiplex_mad()
1589 ctx->slave, wc.status, wc.wr_id); in mlx4_ib_tunnel_comp_worker()
1638 qp_init_attr.slave = ctx->slave; in create_pv_sqp()
1663 ret = find_slave_port_pkey_ix(to_mdev(ctx->ib_dev), ctx->slave, in create_pv_sqp()
1668 to_mdev(ctx->ib_dev)->pkeys.virt2phys_pkey[ctx->slave][ctx->port - 1][0]; in create_pv_sqp()
1756 ctx->slave, wc.status, wc.wr_id); in mlx4_ib_sqp_comp_worker()
1770 static int alloc_pv_object(struct mlx4_ib_dev *dev, int slave, int port, in alloc_pv_object() argument
1779 "for port %d, slave %d\n", port, slave); in alloc_pv_object()
1785 ctx->slave = slave; in alloc_pv_object()
1790 static void free_pv_object(struct mlx4_ib_dev *dev, int slave, int port) in free_pv_object() argument
1792 if (dev->sriov.demux[port - 1].tun[slave]) { in free_pv_object()
1793 kfree(dev->sriov.demux[port - 1].tun[slave]); in free_pv_object()
1794 dev->sriov.demux[port - 1].tun[slave] = NULL; in free_pv_object()
1798 static int create_pv_resources(struct ib_device *ibdev, int slave, int port, in create_pv_resources() argument
1908 static void destroy_pv_resources(struct mlx4_ib_dev *dev, int slave, int port, in destroy_pv_resources() argument
1933 static int mlx4_ib_tunnels_update(struct mlx4_ib_dev *dev, int slave, in mlx4_ib_tunnels_update() argument
1939 clean_vf_mcast(&dev->sriov.demux[port - 1], slave); in mlx4_ib_tunnels_update()
1941 if (slave == mlx4_master_func_num(dev->dev)) in mlx4_ib_tunnels_update()
1942 destroy_pv_resources(dev, slave, port, in mlx4_ib_tunnels_update()
1945 destroy_pv_resources(dev, slave, port, in mlx4_ib_tunnels_update()
1946 dev->sriov.demux[port - 1].tun[slave], 1); in mlx4_ib_tunnels_update()
1951 ret = create_pv_resources(&dev->ib_dev, slave, port, 1, in mlx4_ib_tunnels_update()
1952 dev->sriov.demux[port - 1].tun[slave]); in mlx4_ib_tunnels_update()
1955 if (!ret && slave == mlx4_master_func_num(dev->dev)) in mlx4_ib_tunnels_update()
1956 ret = create_pv_resources(&dev->ib_dev, slave, port, 0, in mlx4_ib_tunnels_update()
1966 mlx4_ib_tunnels_update(dmxw->dev, dmxw->slave, (int) dmxw->port, in mlx4_ib_tunnels_update_work()