Lines Matching refs:slave

134 static int mlx4_master_process_vhcr(struct mlx4_dev *dev, int slave,
799 int slave, u64 slave_addr, in mlx4_ACCESS_MEM() argument
806 (slave & ~0x7f) | (size & 0xff)) { in mlx4_ACCESS_MEM()
808 slave_addr, master_addr, slave, size); in mlx4_ACCESS_MEM()
813 in_param = (u64) slave | slave_addr; in mlx4_ACCESS_MEM()
817 out_param = (u64) slave | slave_addr; in mlx4_ACCESS_MEM()
877 static int mlx4_MAD_IFC_wrapper(struct mlx4_dev *dev, int slave, in mlx4_MAD_IFC_wrapper() argument
923 pidx = priv->virt2phys_pkey[slave][port - 1][vidx]; in mlx4_MAD_IFC_wrapper()
937 if (!err && slave != mlx4_master_func_num(dev)) { in mlx4_MAD_IFC_wrapper()
940 *state = (*state & 0xf0) | vf_port_state(dev, port, slave); in mlx4_MAD_IFC_wrapper()
941 slave_cap_mask = priv->mfunc.master.slave_state[slave].ib_cap_mask[port]; in mlx4_MAD_IFC_wrapper()
947 __be64 guid = mlx4_get_admin_guid(dev, slave, in mlx4_MAD_IFC_wrapper()
953 if (slave == 0 && guid == 0) { in mlx4_MAD_IFC_wrapper()
967 data, slave, port); in mlx4_MAD_IFC_wrapper()
981 slave_node_guid = mlx4_get_slave_node_guid(dev, slave); in mlx4_MAD_IFC_wrapper()
992 if (slave != mlx4_master_func_num(dev) && in mlx4_MAD_IFC_wrapper()
993 !mlx4_vf_smi_enabled(dev, slave, port)) { in mlx4_MAD_IFC_wrapper()
997 slave, smp->method, smp->mgmt_class, in mlx4_MAD_IFC_wrapper()
1009 static int mlx4_CMD_EPERM_wrapper(struct mlx4_dev *dev, int slave, in mlx4_CMD_EPERM_wrapper() argument
1018 int mlx4_DMA_wrapper(struct mlx4_dev *dev, int slave, in mlx4_DMA_wrapper() argument
1032 in_param |= slave; in mlx4_DMA_wrapper()
1645 static int mlx4_master_process_vhcr(struct mlx4_dev *dev, int slave, in mlx4_master_process_vhcr() argument
1667 ret = mlx4_ACCESS_MEM(dev, priv->mfunc.vhcr_dma, slave, in mlx4_master_process_vhcr()
1668 priv->mfunc.master.slave_state[slave].vhcr_dma, in mlx4_master_process_vhcr()
1699 vhcr->op, slave); in mlx4_master_process_vhcr()
1714 ret = mlx4_ACCESS_MEM(dev, inbox->dma, slave, in mlx4_master_process_vhcr()
1728 if (cmd->verify && cmd->verify(dev, slave, vhcr, inbox)) { in mlx4_master_process_vhcr()
1730 vhcr->op, slave, vhcr->in_modifier); in mlx4_master_process_vhcr()
1747 err = cmd->wrapper(dev, slave, vhcr, inbox, outbox, in mlx4_master_process_vhcr()
1771 vhcr->op, slave, vhcr->errno, err); in mlx4_master_process_vhcr()
1779 ret = mlx4_ACCESS_MEM(dev, outbox->dma, slave, in mlx4_master_process_vhcr()
1796 ret = mlx4_ACCESS_MEM(dev, priv->mfunc.vhcr_dma, slave, in mlx4_master_process_vhcr()
1797 priv->mfunc.master.slave_state[slave].vhcr_dma, in mlx4_master_process_vhcr()
1805 mlx4_GEN_EQE(dev, slave, &priv->mfunc.master.cmd_eqe)) in mlx4_master_process_vhcr()
1807 slave); in mlx4_master_process_vhcr()
1818 int slave, int port) in mlx4_master_immediate_activate_vlan_qos() argument
1827 vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; in mlx4_master_immediate_activate_vlan_qos()
1828 vp_admin = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_master_immediate_activate_vlan_qos()
1836 if (!(priv->mfunc.master.slave_state[slave].active && in mlx4_master_immediate_activate_vlan_qos()
1846 slave, port); in mlx4_master_immediate_activate_vlan_qos()
1864 slave, port); in mlx4_master_immediate_activate_vlan_qos()
1874 admin_vlan_ix, slave, port); in mlx4_master_immediate_activate_vlan_qos()
1898 work->slave = slave; in mlx4_master_immediate_activate_vlan_qos()
1968 static int mlx4_master_activate_admin_state(struct mlx4_priv *priv, int slave) in mlx4_master_activate_admin_state() argument
1974 &priv->dev, slave); in mlx4_master_activate_admin_state()
1983 priv->mfunc.master.vf_oper[slave].smi_enabled[port] = in mlx4_master_activate_admin_state()
1984 priv->mfunc.master.vf_admin[slave].enable_smi[port]; in mlx4_master_activate_admin_state()
1985 vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; in mlx4_master_activate_admin_state()
1986 vp_admin = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_master_activate_admin_state()
1995 slave, port); in mlx4_master_activate_admin_state()
2000 vp_oper->vlan_idx, slave, port); in mlx4_master_activate_admin_state()
2011 slave, port); in mlx4_master_activate_admin_state()
2015 vp_oper->state.mac, vp_oper->mac_idx, slave, port); in mlx4_master_activate_admin_state()
2021 static void mlx4_master_deactivate_admin_state(struct mlx4_priv *priv, int slave) in mlx4_master_deactivate_admin_state() argument
2026 &priv->dev, slave); in mlx4_master_deactivate_admin_state()
2036 priv->mfunc.master.vf_oper[slave].smi_enabled[port] = in mlx4_master_deactivate_admin_state()
2038 vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; in mlx4_master_deactivate_admin_state()
2052 static void mlx4_master_do_cmd(struct mlx4_dev *dev, int slave, u8 cmd, in mlx4_master_do_cmd() argument
2062 slave_state[slave].comm_toggle ^= 1; in mlx4_master_do_cmd()
2063 reply = (u32) slave_state[slave].comm_toggle << 31; in mlx4_master_do_cmd()
2064 if (toggle != slave_state[slave].comm_toggle) { in mlx4_master_do_cmd()
2066 toggle, slave); in mlx4_master_do_cmd()
2070 mlx4_warn(dev, "Received reset from slave:%d\n", slave); in mlx4_master_do_cmd()
2071 slave_state[slave].active = false; in mlx4_master_do_cmd()
2072 slave_state[slave].old_vlan_api = false; in mlx4_master_do_cmd()
2073 mlx4_master_deactivate_admin_state(priv, slave); in mlx4_master_do_cmd()
2075 slave_state[slave].event_eq[i].eqn = -1; in mlx4_master_do_cmd()
2076 slave_state[slave].event_eq[i].token = 0; in mlx4_master_do_cmd()
2080 if (MLX4_COMM_CMD_FLR == slave_state[slave].last_cmd) in mlx4_master_do_cmd()
2083 mlx4_dispatch_event(dev, MLX4_DEV_EVENT_SLAVE_SHUTDOWN, slave); in mlx4_master_do_cmd()
2092 MLX4_COMM_CMD_FLR == slave_state[slave].last_cmd) { in mlx4_master_do_cmd()
2094 slave, cmd); in mlx4_master_do_cmd()
2100 if (slave_state[slave].last_cmd != MLX4_COMM_CMD_RESET) in mlx4_master_do_cmd()
2102 slave_state[slave].vhcr_dma = ((u64) param) << 48; in mlx4_master_do_cmd()
2103 priv->mfunc.master.slave_state[slave].cookie = 0; in mlx4_master_do_cmd()
2106 if (slave_state[slave].last_cmd != MLX4_COMM_CMD_VHCR0) in mlx4_master_do_cmd()
2108 slave_state[slave].vhcr_dma |= ((u64) param) << 32; in mlx4_master_do_cmd()
2111 if (slave_state[slave].last_cmd != MLX4_COMM_CMD_VHCR1) in mlx4_master_do_cmd()
2113 slave_state[slave].vhcr_dma |= ((u64) param) << 16; in mlx4_master_do_cmd()
2116 if (slave_state[slave].last_cmd != MLX4_COMM_CMD_VHCR2) in mlx4_master_do_cmd()
2118 slave_state[slave].vhcr_dma |= param; in mlx4_master_do_cmd()
2119 if (mlx4_master_activate_admin_state(priv, slave)) in mlx4_master_do_cmd()
2121 slave_state[slave].active = true; in mlx4_master_do_cmd()
2122 mlx4_dispatch_event(dev, MLX4_DEV_EVENT_SLAVE_INIT, slave); in mlx4_master_do_cmd()
2125 if ((slave_state[slave].last_cmd != MLX4_COMM_CMD_VHCR_EN) && in mlx4_master_do_cmd()
2126 (slave_state[slave].last_cmd != MLX4_COMM_CMD_VHCR_POST)) { in mlx4_master_do_cmd()
2128 slave, cmd, slave_state[slave].last_cmd); in mlx4_master_do_cmd()
2133 if (mlx4_master_process_vhcr(dev, slave, NULL)) { in mlx4_master_do_cmd()
2135 slave); in mlx4_master_do_cmd()
2142 mlx4_warn(dev, "Bad comm cmd:%d from slave:%d\n", cmd, slave); in mlx4_master_do_cmd()
2146 if (!slave_state[slave].is_slave_going_down) in mlx4_master_do_cmd()
2147 slave_state[slave].last_cmd = cmd; in mlx4_master_do_cmd()
2153 cmd, slave); in mlx4_master_do_cmd()
2157 &priv->mfunc.comm[slave].slave_read); in mlx4_master_do_cmd()
2165 mlx4_delete_all_resources_for_slave(dev, slave); in mlx4_master_do_cmd()
2169 slave, cmd); in mlx4_master_do_cmd()
2177 if (!slave_state[slave].is_slave_going_down) in mlx4_master_do_cmd()
2178 slave_state[slave].last_cmd = MLX4_COMM_CMD_RESET; in mlx4_master_do_cmd()
2182 memset(&slave_state[slave].event_eq, 0, in mlx4_master_do_cmd()
2185 &priv->mfunc.comm[slave].slave_read); in mlx4_master_do_cmd()
2204 int i, j, slave; in mlx4_master_comm_channel() local
2217 slave = (i * 32) + j; in mlx4_master_comm_channel()
2219 &mfunc->comm[slave].slave_write)); in mlx4_master_comm_channel()
2220 slt = swab32(readl(&mfunc->comm[slave].slave_read)) in mlx4_master_comm_channel()
2224 if (master->slave_state[slave].comm_toggle in mlx4_master_comm_channel()
2227 slave, slt, in mlx4_master_comm_channel()
2228 master->slave_state[slave].comm_toggle); in mlx4_master_comm_channel()
2229 master->slave_state[slave].comm_toggle = in mlx4_master_comm_channel()
2232 mlx4_master_do_cmd(dev, slave, in mlx4_master_comm_channel()
2491 int slave; in mlx4_report_internal_err_comm_event() local
2497 for (slave = 0; slave < dev->num_slaves; slave++) { in mlx4_report_internal_err_comm_event()
2498 slave_read = swab32(readl(&priv->mfunc.comm[slave].slave_read)); in mlx4_report_internal_err_comm_event()
2501 &priv->mfunc.comm[slave].slave_read); in mlx4_report_internal_err_comm_event()
2664 int mlx4_get_vf_indx(struct mlx4_dev *dev, int slave) in mlx4_get_vf_indx() argument
2666 if (slave < 1 || slave > dev->persist->num_vfs) { in mlx4_get_vf_indx()
2669 slave, dev->num_slaves); in mlx4_get_vf_indx()
2672 return slave - 1; in mlx4_get_vf_indx()
2694 struct mlx4_active_ports mlx4_get_active_ports(struct mlx4_dev *dev, int slave) in mlx4_get_active_ports() argument
2701 if (slave == 0) { in mlx4_get_active_ports()
2706 vf = mlx4_get_vf_indx(dev, slave); in mlx4_get_active_ports()
2711 min((int)dev->dev_vfs[mlx4_get_vf_indx(dev, slave)].n_ports, in mlx4_get_active_ports()
2718 int mlx4_slave_convert_port(struct mlx4_dev *dev, int slave, int port) in mlx4_slave_convert_port() argument
2721 struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); in mlx4_slave_convert_port()
2735 int mlx4_phys_to_slave_port(struct mlx4_dev *dev, int slave, int port) in mlx4_phys_to_slave_port() argument
2737 struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); in mlx4_phys_to_slave_port()
2789 static int mlx4_slaves_closest_port(struct mlx4_dev *dev, int slave, int port) in mlx4_slaves_closest_port() argument
2791 struct mlx4_active_ports actv_ports = mlx4_get_active_ports(dev, slave); in mlx4_slaves_closest_port()
2805 static int mlx4_set_vport_qos(struct mlx4_priv *priv, int slave, int port, in mlx4_set_vport_qos() argument
2817 if (slave > port_qos->num_of_qos_vfs) { in mlx4_set_vport_qos()
2842 err = mlx4_SET_VPORT_QOS_set(dev, port, slave, vpp_qos); in mlx4_set_vport_qos()
2844 mlx4_info(dev, "Failed to set Vport %d QoS values\n", slave); in mlx4_set_vport_qos()
2906 int slave; in mlx4_set_vf_mac() local
2911 slave = mlx4_get_slave_indx(dev, vf); in mlx4_set_vf_mac()
2912 if (slave < 0) in mlx4_set_vf_mac()
2915 port = mlx4_slaves_closest_port(dev, slave, port); in mlx4_set_vf_mac()
2916 s_info = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_set_vf_mac()
2929 int slave; in mlx4_set_vf_vlan() local
2938 slave = mlx4_get_slave_indx(dev, vf); in mlx4_set_vf_vlan()
2939 if (slave < 0) in mlx4_set_vf_vlan()
2942 port = mlx4_slaves_closest_port(dev, slave, port); in mlx4_set_vf_vlan()
2943 vf_admin = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_set_vf_vlan()
2959 vf_admin->qos_vport = slave; in mlx4_set_vf_vlan()
2961 if (mlx4_master_immediate_activate_vlan_qos(priv, slave, port)) in mlx4_set_vf_vlan()
2973 int slave; in mlx4_set_vf_rate() local
2986 slave = mlx4_get_slave_indx(dev, vf); in mlx4_set_vf_rate()
2987 if (slave < 0) in mlx4_set_vf_rate()
2990 port = mlx4_slaves_closest_port(dev, slave, port); in mlx4_set_vf_rate()
2991 vf_admin = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_set_vf_rate()
2993 err = mlx4_set_vport_qos(priv, slave, port, max_tx_rate); in mlx4_set_vf_rate()
3022 vf_admin->qos_vport = max_tx_rate ? slave : MLX4_VPP_DEFAULT_VPORT; in mlx4_set_vf_rate()
3024 if (priv->mfunc.master.slave_state[slave].active && in mlx4_set_vf_rate()
3026 mlx4_master_immediate_activate_vlan_qos(priv, slave, port); in mlx4_set_vf_rate()
3036 bool mlx4_get_slave_default_vlan(struct mlx4_dev *dev, int port, int slave, in mlx4_get_slave_default_vlan() argument
3043 port = mlx4_slaves_closest_port(dev, slave, port); in mlx4_get_slave_default_vlan()
3044 vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; in mlx4_get_slave_default_vlan()
3061 int slave; in mlx4_set_vf_spoofchk() local
3067 slave = mlx4_get_slave_indx(dev, vf); in mlx4_set_vf_spoofchk()
3068 if (slave < 0) in mlx4_set_vf_spoofchk()
3071 port = mlx4_slaves_closest_port(dev, slave, port); in mlx4_set_vf_spoofchk()
3072 s_info = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_set_vf_spoofchk()
3083 int slave; in mlx4_get_vf_config() local
3088 slave = mlx4_get_slave_indx(dev, vf); in mlx4_get_vf_config()
3089 if (slave < 0) in mlx4_get_vf_config()
3092 s_info = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_get_vf_config()
3123 int slave; in mlx4_set_vf_link_state() local
3126 slave = mlx4_get_slave_indx(dev, vf); in mlx4_set_vf_link_state()
3127 if (slave < 0) in mlx4_set_vf_link_state()
3130 port = mlx4_slaves_closest_port(dev, slave, port); in mlx4_set_vf_link_state()
3150 link_state, slave, port); in mlx4_set_vf_link_state()
3153 s_info = &priv->mfunc.master.vf_admin[slave].vport[port]; in mlx4_set_vf_link_state()
3157 mlx4_gen_port_state_change_eqe(dev, slave, port, link_stat_event); in mlx4_set_vf_link_state()
3159 if (mlx4_master_immediate_activate_vlan_qos(priv, slave, port)) in mlx4_set_vf_link_state()
3167 int mlx4_vf_smi_enabled(struct mlx4_dev *dev, int slave, int port) in mlx4_vf_smi_enabled() argument
3171 if (slave < 1 || slave >= dev->num_slaves || in mlx4_vf_smi_enabled()
3175 return priv->mfunc.master.vf_oper[slave].smi_enabled[port] == in mlx4_vf_smi_enabled()
3180 int mlx4_vf_get_enable_smi_admin(struct mlx4_dev *dev, int slave, int port) in mlx4_vf_get_enable_smi_admin() argument
3184 if (slave == mlx4_master_func_num(dev)) in mlx4_vf_get_enable_smi_admin()
3187 if (slave < 1 || slave >= dev->num_slaves || in mlx4_vf_get_enable_smi_admin()
3191 return priv->mfunc.master.vf_admin[slave].enable_smi[port] == in mlx4_vf_get_enable_smi_admin()
3196 int mlx4_vf_set_enable_smi_admin(struct mlx4_dev *dev, int slave, int port, in mlx4_vf_set_enable_smi_admin() argument
3201 if (slave == mlx4_master_func_num(dev)) in mlx4_vf_set_enable_smi_admin()
3204 if (slave < 1 || slave >= dev->num_slaves || in mlx4_vf_set_enable_smi_admin()
3209 priv->mfunc.master.vf_admin[slave].enable_smi[port] = enabled; in mlx4_vf_set_enable_smi_admin()