Lines Matching refs:port

183 MODULE_PARM_DESC(log_num_mac, "Log2 max number of MACs per ETH port (1-7)");
188 "(Obsolete) Log2 max number of VLANs per ETH port (0-7)");
189 /* Log2 max number of VLANs per ETH port (0-7) */
210 "\t\tor a string to map device function numbers to their pair of port types values (e.g. '0000:04:00.0-1;2,002b:1c:0b.a-1;1').\n"
211 "\t\tValid port types: 1-ib, 2-eth, 3-auto, 4-N/A\n"
212 "\t\tIn case that only one port is available use the N/A port type for port2 (e.g '1,4').");
570 mlx4_err(dev, "Only same port types supported "
579 mlx4_err(dev, "Requested port type for port %d is not "
694 /* Sense port always allowed on supported devices for ConnectX-1 and -2 */
697 /* Don't do sense port on multifunction devices (for now at least) */
720 * if IB and ETH are supported, we set the port
721 * type according to user selection of port type;
732 mlx4_err(dev, "Port %d is valid port. "
742 * Link sensing is allowed on the port if 3 conditions are true:
743 * 1. Both protocols are supported on the port.
744 * 2. Different types are supported on the port
756 * If "default_sense" bit is set, we move the port to "AUTO" mode
758 * port type from beginning
773 "for port %d, reducing to %d.\n",
779 "for port %d, reducing to %d.\n",
870 void mlx4_sync_pkey_table(struct mlx4_dev *dev, int slave, int port, int i, int val)
877 priv->virt2phys_pkey[slave][port - 1][i] = val;
1044 mlx4_err(dev, "QUERY_FUNC_CAP port command failed for"
1045 " port %d, aborting (%d).\n", i, err);
1108 int port;
1114 for (port = 1; port <= dev->caps.num_ports; port++) {
1115 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_IB)
1117 else if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
1128 * Change the port configuration of the device.
1129 * Every user of this function must hold the port mutex.
1136 int port;
1138 for (port = 0; port < dev->caps.num_ports; port++) {
1139 /* Change the port type only if the new type is different
1141 if (port_types[port] != dev->caps.port_type[port + 1])
1146 for (port = 1; port <= dev->caps.num_ports; port++) {
1147 mlx4_CLOSE_PORT(dev, port);
1148 dev->caps.port_type[port] = port_types[port - 1];
1149 err = mlx4_SET_PORT(dev, port, -1);
1151 mlx4_err(dev, "Failed to set port %d, "
1152 "aborting\n", port);
1179 (mdev->caps.port_type[info->port] == MLX4_PORT_TYPE_IB) ?
1181 if (mdev->caps.possible_type[info->port] == MLX4_PORT_TYPE_AUTO)
1209 mlx4_err(mdev, "%s is not supported port type\n", buf);
1213 if ((info->tmp_type & mdev->caps.supported_type[info->port]) !=
1215 mlx4_err(mdev, "Requested port type for port %d is not supported on this HCA\n",
1216 info->port);
1223 mdev->caps.possible_type[info->port] = info->tmp_type;
1226 types[i] = priv->port[i+1].tmp_type ? priv->port[i+1].tmp_type :
1258 priv->port[i + 1].tmp_type = 0;
1345 /* When port type is eth, port mtu value isn't used. */
1346 if (mdev->caps.port_type[info->port] == MLX4_PORT_TYPE_ETH)
1350 ibta_mtu_to_int(mdev->caps.port_ib_mtu[info->port]));
1362 int err, port, mtu, ibta_mtu = -1;
1364 if (mdev->caps.port_type[info->port] == MLX4_PORT_TYPE_ETH) {
1365 mlx4_warn(mdev, "port level mtu is only used for IB ports\n");
1377 mdev->caps.port_ib_mtu[info->port] = ibta_mtu;
1382 for (port = 1; port <= mdev->caps.num_ports; port++) {
1383 mlx4_CLOSE_PORT(mdev, port);
1384 err = mlx4_SET_PORT(mdev, port, -1);
1386 mlx4_err(mdev, "Failed to set port %d, "
1387 "aborting\n", port);
2212 /* allocating 2 counters per port for PFs */
2265 struct counter_index *port, *tmp_port;
2272 list_for_each_entry_safe(port, tmp_port,
2275 list_del(&port->list);
2276 kfree(port);
2322 mlx4_dbg(dev, "%s: delete counter index %d for slave %d and port %d\n"
2328 mlx4_dbg(dev, "%s: can't delete default counter index %d for slave %d and port %d\n"
2339 int __mlx4_counter_alloc(struct mlx4_dev *dev, int slave, int port, u32 *idx)
2348 (port < 0) || (port > MLX4_MAX_PORTS)) {
2349 mlx4_dbg(dev, "%s: invalid slave(%d) or port(%d) index\n",
2350 __func__, slave, port);
2354 /* handle old guest request does not support request by port index */
2355 if (port == 0) {
2357 mlx4_dbg(dev, "%s: allocated default counter index %d for slave %d port %d\n"
2358 , __func__, *idx, slave, port);
2365 /* if no resources return the default counter of the slave and port */
2368 new_counter_index = list_entry(priv->counters_table.global_port_list[port - 1].next,
2372 new_counter_index = list_entry(priv->counters_table.vf_list[slave - 1][port - 1].next,
2378 mlx4_dbg(dev, "%s: allocated defualt counter index %d for slave %d port %d\n"
2379 , __func__, *idx, slave, port);
2388 list_add_tail(&new_counter_index->list, &priv->counters_table.global_port_list[port - 1]);
2394 list_add_tail(&new_counter_index->list, &priv->counters_table.vf_list[slave - 1][port - 1]);
2397 mlx4_dbg(dev, "%s: allocated counter index %d for slave %d port %d\n"
2398 , __func__, *idx, slave, port);
2412 int mlx4_counter_alloc(struct mlx4_dev *dev, u8 port, u32 *idx)
2421 ((u32) port) << 8 | (u32) RES_COUNTER,
2430 c_index = list_entry(priv->counters_table.global_port_list[port - 1].next,
2440 mlx4_counter_free(dev, port, *idx);
2445 list_add_tail(&new_counter_index->list, &priv->counters_table.global_port_list[port - 1]);
2447 mlx4_dbg(dev, "%s: allocated counter index %d for port %d\n"
2448 , __func__, *idx, port);
2453 return __mlx4_counter_alloc(dev, 0, port, idx);
2457 void __mlx4_counter_free(struct mlx4_dev *dev, int slave, int port, u32 idx)
2467 mlx4_dbg(dev, "%s: try to delete default counter index %d for port %d\n"
2468 , __func__, idx, port);
2473 (port < 0) || (port > MLX4_MAX_PORTS)) {
2474 mlx4_warn(dev, "%s: deletion failed due to invalid slave(%d) or port(%d) index\n"
2483 &priv->counters_table.global_port_list[port - 1],
2494 mlx4_dbg(dev, "%s: delete counter index %d for native device (%d) port %d\n"
2495 , __func__, idx, slave, port);
2499 mlx4_dbg(dev, "%s: can't delete default counter index %d for native device (%d) port %d\n"
2500 , __func__, idx, slave, port);
2506 mlx4_dbg(dev, "%s: can't delete counter index %d for native device (%d) port %d\n"
2507 , __func__, idx, slave, port);
2511 &priv->counters_table.vf_list[slave - 1][port - 1],
2522 mlx4_dbg(dev, "%s: delete counter index %d for slave %d port %d\n",
2523 __func__, idx, slave, port);
2527 mlx4_dbg(dev, "%s: can't delete default slave (%d) counter index %d for port %d\n"
2528 , __func__, slave, idx, port);
2534 mlx4_dbg(dev, "%s: can't delete slave (%d) counter index %d for port %d\n"
2535 , __func__, slave, idx, port);
2542 void mlx4_counter_free(struct mlx4_dev *dev, u8 port, u32 idx)
2552 ((u32) port) << 8 | (u32) RES_COUNTER,
2560 &priv->counters_table.global_port_list[port - 1],
2565 mlx4_dbg(dev, "%s: delete counter index %d for port %d\n"
2566 , __func__, idx, port);
2576 __mlx4_counter_free(dev, 0, port, idx);
2607 u8 mlx4_get_default_counter_index(struct mlx4_dev *dev, int slave, int port)
2612 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_IB) {
2613 mlx4_dbg(dev, "%s: return counter index %d for slave %d port (MLX4_PORT_TYPE_IB) %d\n",
2614 __func__, MLX4_SINK_COUNTER_INDEX, slave, port);
2620 new_counter_index = list_entry(priv->counters_table.global_port_list[port - 1].next,
2624 new_counter_index = list_entry(priv->counters_table.vf_list[slave - 1][port - 1].next,
2630 mlx4_dbg(dev, "%s: return counter index %d for slave %d port %d\n",
2631 __func__, new_counter_index->index, slave, port);
2637 int mlx4_get_vport_ethtool_stats(struct mlx4_dev *dev, int port,
2659 &priv->counters_table.global_port_list[port - 1],
2708 int port;
2829 for (port = 1; port <= dev->caps.num_ports; port++) {
2831 err = mlx4_get_port_ib_caps(dev, port,
2834 mlx4_warn(dev, "failed to get port %d default "
2836 "with caps = 0\n", port, err);
2837 dev->caps.ib_port_def_cap[port] = ib_port_default_caps;
2839 /* initialize per-slave default ib port capabilities */
2845 priv->mfunc.master.slave_state[i].ib_cap_mask[port] =
2850 dev->caps.port_ib_mtu[port] = IB_MTU_4096;
2852 err = mlx4_SET_PORT(dev, port, mlx4_is_master(dev) ?
2853 dev->caps.pkey_table_len[port] : -1);
2855 mlx4_err(dev, "Failed to set port %d (err=%d), "
2856 "aborting\n", port, err);
3005 static int mlx4_init_port_info(struct mlx4_dev *dev, int port)
3007 struct mlx4_port_info *info = &mlx4_priv(dev)->port[port];
3011 info->port = port;
3015 info->base_qpn = mlx4_get_base_qpn(dev, port);
3018 sprintf(info->dev_name, "mlx4_port%d", port);
3031 mlx4_err(dev, "Failed to create file for port %d\n", port);
3032 info->port = -1;
3035 sprintf(info->dev_mtu_name, "mlx4_port%d_mtu", port);
3048 mlx4_err(dev, "Failed to create mtu file for port %d\n", port);
3050 info->port = -1;
3066 if (info->port < 0)
3175 int port;
3423 for (port = 1; port <= dev->caps.num_ports; port++) {
3424 err = mlx4_init_port_info(dev, port);
3444 for (--port; port >= 1; --port)
3445 mlx4_cleanup_port_info(&priv->port[port]);
3536 mlx4_cleanup_port_info(&priv->port[p]);
3633 mlx4_err(dev, "mlx4_restart_one: could not restore original port types (%d)\n",