Lines Matching refs:slave

336 	int i, ix, slave, err;
339 for (slave = 0; slave < dev->dev->caps.sqp_demux; slave++) {
340 if (slave == mlx4_master_func_num(dev->dev))
342 if (!mlx4_is_slave_active(dev->dev, slave))
351 if (dev->pkeys.virt2phys_pkey[slave][port_num - 1]
353 err = mlx4_gen_pkey_eqe(dev->dev, slave, port_num);
354 pr_debug("propagate_pkey_ev: slave %d,"
356 slave, port_num, ix, err);
417 static int mlx4_ib_demux_sa_handler(struct ib_device *ibdev, int port, int slave,
425 ret = mlx4_ib_mcg_demux_handler(ibdev, port, slave, sa_mad);
446 static int find_slave_port_pkey_ix(struct mlx4_ib_dev *dev, int slave,
453 if (slave == mlx4_master_func_num(dev->dev))
459 if (dev->pkeys.virt2phys_pkey[slave][port - 1][i] == unassigned_pkey_ix)
462 pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][i];
504 static int is_proxy_qp0(struct mlx4_ib_dev *dev, int qpn, int slave)
506 int proxy_start = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave;
511 int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u32 port,
536 tun_ctx = dev->sriov.demux[port-1].tun[slave];
547 /* compute P_Key index to put in tunnel header for slave */
553 is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
558 ret = find_slave_port_pkey_ix(dev, slave, port, cached_pkey, &pkey_ix);
561 is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
567 tun_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0];
569 dqpn = dev->dev->phys_caps.base_proxy_sqpn + 8 * slave + port + (dest_qpt * 2) - 1;
571 /* get tunnel tx data buf for slave */
624 if (mlx4_get_slave_default_vlan(dev->dev, port, slave, &vlan,
688 int slave = -1;
711 err = mlx4_get_slave_from_roce_gid(dev->dev, port, dgid.raw, &slave);
714 err = mlx4_get_slave_from_roce_gid(dev->dev, other_port, dgid.raw, &slave);
717 pr_debug("resolved slave %d from gid %pI6 wire port %d other %d\n",
718 slave, grh->dgid.raw, port, other_port);
725 if (slave >= dev->dev->caps.sqp_demux) {
726 mlx4_ib_warn(ibdev, "slave id: %d is bigger than allowed:%d\n",
727 slave, dev->dev->caps.sqp_demux);
734 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
736 pr_debug("failed sending %s to slave %d via tunnel qp (%d)\n",
737 is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
738 slave, err);
743 slave = mlx4_master_func_num(dev->dev);
745 /* See if the slave id is encoded in a response mad */
748 slave = *slave_id;
749 if (slave != 255) /*255 indicates the dom0*/
759 slave = 0;
761 slave = mlx4_ib_find_real_gid(ibdev, port,
763 if (slave < 0) {
774 if (slave != 255 && slave != mlx4_master_func_num(dev->dev)) {
775 if (!mlx4_vf_smi_enabled(dev->dev, slave, port))
779 mlx4_ib_warn(ibdev, "demux QP0. rejecting unsolicited mad for slave %d class 0x%x, method 0x%x\n",
780 slave, mad->mad_hdr.mgmt_class,
787 if (mlx4_ib_demux_sa_handler(ibdev, port, slave,
792 if (mlx4_ib_demux_cm_handler(ibdev, port, &slave, mad))
801 if (slave != mlx4_master_func_num(dev->dev)) {
803 "for slave:%d\n", mad->mad_hdr.mgmt_class, slave);
807 /*make sure that no slave==255 was not handled yet.*/
808 if (slave >= dev->dev->caps.sqp_demux) {
809 mlx4_ib_warn(ibdev, "slave id: %d is bigger than allowed:%d\n",
810 slave, dev->dev->caps.sqp_demux);
814 err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
816 pr_debug("failed sending %s to slave %d via tunnel qp (%d)\n",
817 is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
818 slave, err);
1341 int slave, struct ib_sa_mad *sa_mad)
1348 ret = mlx4_ib_mcg_multiplex_handler(ibdev, port, slave, sa_mad);
1356 int mlx4_ib_send_to_wire(struct mlx4_ib_dev *dev, int slave, u32 port,
1383 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][0];
1387 wire_pkey_ix = dev->pkeys.virt2phys_pkey[slave][port - 1][pkey_index];
1460 static int get_slave_base_gid_ix(struct mlx4_ib_dev *dev, int slave, int port)
1463 return slave;
1464 return mlx4_get_base_gid_ix(dev->dev, slave, port);
1467 static void fill_in_real_sgid_index(struct mlx4_ib_dev *dev, int slave, int port,
1472 grh->sgid_index = slave;
1474 grh->sgid_index += get_slave_base_gid_ix(dev, slave, port);
1486 int slave;
1493 /* Get slave that sent this packet */
1501 slave = ((wc->src_qp & ~0x7) - dev->dev->phys_caps.base_proxy_sqpn) / 8;
1502 if (slave != ctx->slave) {
1504 "belongs to another slave\n", wc->src_qp);
1523 "class:%d slave:%d\n", *slave_id,
1524 tunnel->mad.mad_hdr.mgmt_class, slave);
1527 *slave_id = slave;
1537 if (slave != mlx4_master_func_num(dev->dev) &&
1538 !mlx4_vf_smi_enabled(dev->dev, slave, ctx->port))
1542 if (mlx4_ib_multiplex_sa_handler(ctx->ib_dev, ctx->port, slave,
1547 if (mlx4_ib_multiplex_cm_handler(ctx->ib_dev, ctx->port, slave,
1558 if (slave != mlx4_master_func_num(dev->dev)) {
1560 "for slave:%d\n", tunnel->mad.mad_hdr.mgmt_class, slave);
1571 port = mlx4_slave_convert_port(dev->dev, slave, port);
1579 fill_in_real_sgid_index(dev, slave, ctx->port, &ah_attr);
1584 /* if slave have default vlan use it */
1585 if (mlx4_get_slave_default_vlan(dev->dev, ctx->port, slave,
1589 sts = mlx4_ib_send_to_wire(dev, slave, ctx->port,
1590 is_proxy_qp0(dev, wc->src_qp, slave) ?
1597 pr_debug("failed sending %s to wire on behalf of slave %d (%d)\n",
1598 is_proxy_qp0(dev, wc->src_qp, slave) ? "SMI" : "GSI",
1599 slave, sts);
1774 ctx->slave, wc.status, wc.wr_id);
1824 qp_init_attr.slave = ctx->slave;
1849 ret = find_slave_port_pkey_ix(to_mdev(ctx->ib_dev), ctx->slave,
1854 to_mdev(ctx->ib_dev)->pkeys.virt2phys_pkey[ctx->slave][ctx->port - 1][0];
1941 ctx->slave, wc.status, wc.wr_id);
1955 static int alloc_pv_object(struct mlx4_ib_dev *dev, int slave, int port,
1967 ctx->slave = slave;
1972 static void free_pv_object(struct mlx4_ib_dev *dev, int slave, int port)
1974 if (dev->sriov.demux[port - 1].tun[slave]) {
1975 kfree(dev->sriov.demux[port - 1].tun[slave]);
1976 dev->sriov.demux[port - 1].tun[slave] = NULL;
1980 static int create_pv_resources(struct ib_device *ibdev, int slave, int port,
2093 static void destroy_pv_resources(struct mlx4_ib_dev *dev, int slave, int port,
2118 static int mlx4_ib_tunnels_update(struct mlx4_ib_dev *dev, int slave,
2124 clean_vf_mcast(&dev->sriov.demux[port - 1], slave);
2126 if (slave == mlx4_master_func_num(dev->dev))
2127 destroy_pv_resources(dev, slave, port,
2130 destroy_pv_resources(dev, slave, port,
2131 dev->sriov.demux[port - 1].tun[slave], 1);
2136 ret = create_pv_resources(&dev->ib_dev, slave, port, 1,
2137 dev->sriov.demux[port - 1].tun[slave]);
2140 if (!ret && slave == mlx4_master_func_num(dev->dev))
2141 ret = create_pv_resources(&dev->ib_dev, slave, port, 0,
2151 mlx4_ib_tunnels_update(dmxw->dev, dmxw->slave, (int) dmxw->port,