Lines Matching defs:port

23 #include <linux/mlx5/port.h>
134 struct mlx5_ib_port *port;
138 port = &dev->port[i];
139 if (!port->rep)
142 if (upper == ndev && port->rep->vport == MLX5_VPORT_UPLINK) {
144 return &port->roce;
147 if (upper && port->rep->vport == MLX5_VPORT_UPLINK)
150 read_lock(&port->roce.netdev_lock);
151 rep_ndev = mlx5_ib_get_rep_netdev(port->rep->esw,
152 port->rep->vport);
154 read_unlock(&port->roce.netdev_lock);
156 return &port->roce;
158 read_unlock(&port->roce.netdev_lock);
265 read_lock(&ibdev->port[port_num - 1].roce.netdev_lock);
266 ndev = ibdev->port[port_num - 1].roce.netdev;
269 read_unlock(&ibdev->port[port_num - 1].roce.netdev_lock);
284 struct mlx5_ib_port *port;
296 port = &ibdev->port[ib_port_num - 1];
297 spin_lock(&port->mp.mpi_lock);
298 mpi = ibdev->port[ib_port_num - 1].mp.mpi;
307 spin_unlock(&port->mp.mpi_lock);
317 struct mlx5_ib_port *port;
322 port = &ibdev->port[port_num - 1];
324 spin_lock(&port->mp.mpi_lock);
325 mpi = ibdev->port[port_num - 1].mp.mpi;
333 spin_unlock(&port->mp.mpi_lock);
488 /* This means the port isn't affiliated yet. Get the
489 * info for the master port instead.
499 * Use native port in case of reps
534 /* If this is a stub query for an unaffiliated port stop here */
1303 static int mlx5_query_hca_port(struct ib_device *ibdev, u32 port,
1323 err = mlx5_query_hca_vport_context(mdev, 0, port, 0, rep);
1346 &props->active_speed, port);
1352 mlx5_query_port_max_mtu(mdev, &max_mtu, port);
1356 mlx5_query_port_oper_mtu(mdev, &oper_mtu, port);
1360 err = mlx5_query_port_vl_hw_cap(mdev, &vl_hw_cap, port);
1371 int mlx5_ib_query_port(struct ib_device *ibdev, u32 port,
1379 ret = mlx5_query_mad_ifc_port(ibdev, port, props);
1383 ret = mlx5_query_hca_port(ibdev, port, props);
1387 ret = mlx5_query_port_roce(ibdev, port, props);
1399 mdev = mlx5_ib_get_native_port_mdev(dev, port, NULL);
1401 /* If the port isn't affiliated yet query the master.
1405 port = 1;
1410 mlx5_ib_put_native_port_mdev(dev, port);
1416 static int mlx5_ib_rep_query_port(struct ib_device *ibdev, u32 port,
1419 return mlx5_query_port_roce(ibdev, port, props);
1422 static int mlx5_ib_rep_query_pkey(struct ib_device *ibdev, u32 port, u16 index,
1425 /* Default special Pkey for representor device port as per the
1432 static int mlx5_ib_query_gid(struct ib_device *ibdev, u32 port, int index,
1440 return mlx5_query_mad_ifc_gids(ibdev, port, index, gid);
1443 return mlx5_query_hca_vport_gid(mdev, 0, port, 0, index, gid);
1451 static int mlx5_query_hca_nic_pkey(struct ib_device *ibdev, u32 port,
1460 mdev = mlx5_ib_get_native_port_mdev(dev, port, &mdev_port_num);
1462 /* The port isn't affiliated yet, get the PKey from the master
1463 * port. For RoCE the PKey tables will be the same.
1473 mlx5_ib_put_native_port_mdev(dev, port);
1478 static int mlx5_ib_query_pkey(struct ib_device *ibdev, u32 port, u16 index,
1483 return mlx5_query_mad_ifc_pkey(ibdev, port, index, pkey);
1487 return mlx5_query_hca_nic_pkey(ibdev, port, index, pkey);
1556 static int mlx5_ib_modify_port(struct ib_device *ibdev, u32 port, int mask,
1565 bool is_ib = (mlx5_ib_port_link_layer(ibdev, port) ==
1577 return set_port_caps_atomic(dev, port, change_mask, value);
1582 err = ib_query_port(ibdev, port, &attr);
1589 err = mlx5_set_port_caps(dev->mdev, port, tmp);
1960 u32 port = mlx5_core_native_port_num(dev->mdev) - 1;
1964 1, &dev->port[port].roce.tx_port_affinity));
2605 u32 port = (eqe->data.port.port >> 4) & 0xf;
2609 if (mlx5_ib_port_link_layer(&ibdev->ib_dev, port) ==
2621 u32 port = (eqe->data.port.port >> 4) & 0xf;
2623 ibev->element.port_num = port;
2629 /* In RoCE, port up/down events are handled in
2632 if (mlx5_ib_port_link_layer(&ibdev->ib_dev, port) ==
2646 schedule_work(&ibdev->devr.ports[port - 1].pkey_change_work);
2700 mlx5_ib_warn(ibdev, "warning: event on port %d\n", ibev.element.port_num);
2756 int port;
2761 for (port = 1; port <= dev->num_ports; port++) {
2763 dev->port_caps[port - 1].has_smi = true;
2766 err = mlx5_query_hca_vport_context(dev->mdev, 0, port, 0,
2769 mlx5_ib_err(dev, "query_hca_vport_context for port=%d failed %d\n",
2770 port, err);
2773 dev->port_caps[port - 1].has_smi = vport_ctx.has_smi;
2781 unsigned int port;
2783 rdma_for_each_port (&dev->ib_dev, port)
2784 mlx5_query_ext_port_caps(dev, port);
2805 int port;
2854 for (port = 0; port < ARRAY_SIZE(devr->ports); ++port)
2855 INIT_WORK(&devr->ports[port].pkey_change_work,
2876 int port;
2884 for (port = 0; port < ARRAY_SIZE(devr->ports); ++port)
2885 cancel_work_sync(&devr->ports[port].pkey_change_work);
3074 struct mlx5_roce *roce = &dev->port[port_num].roce;
3083 struct mlx5_roce *roce = &dev->port[port_num].roce;
3172 struct mlx5_ib_port *port = &ibdev->port[port_num];
3188 spin_lock(&port->mp.mpi_lock);
3190 spin_unlock(&port->mp.mpi_lock);
3196 spin_unlock(&port->mp.mpi_lock);
3201 spin_lock(&port->mp.mpi_lock);
3207 spin_unlock(&port->mp.mpi_lock);
3212 spin_lock(&port->mp.mpi_lock);
3216 port->mp.mpi = NULL;
3218 spin_unlock(&port->mp.mpi_lock);
3222 mlx5_ib_dbg(ibdev, "unaffiliated port %u\n", port_num + 1);
3227 mlx5_ib_err(ibdev, "Failed to unaffiliate port %u\n",
3230 ibdev->port[port_num].roce.last_port_state = IB_PORT_DOWN;
3242 spin_lock(&ibdev->port[port_num].mp.mpi_lock);
3243 if (ibdev->port[port_num].mp.mpi) {
3244 mlx5_ib_dbg(ibdev, "port %u already affiliated.\n",
3246 spin_unlock(&ibdev->port[port_num].mp.mpi_lock);
3250 ibdev->port[port_num].mp.mpi = mpi;
3253 spin_unlock(&ibdev->port[port_num].mp.mpi_lock);
3306 /* build a stub multiport info struct for the native port. */
3318 dev->port[i].mp.mpi = mpi;
3333 "removing port from unaffiliated list.\n");
3334 mlx5_ib_dbg(dev, "port %d bound\n", i + 1);
3340 mlx5_ib_dbg(dev, "no free port found for port %d\n",
3361 if (dev->port[i].mp.mpi) {
3362 /* Destroy the native port stub */
3364 kfree(dev->port[i].mp.mpi);
3365 dev->port[i].mp.mpi = NULL;
3369 list_add_tail(&dev->port[i].mp.mpi->list,
3372 dev->port[i].mp.mpi);
3693 spin_lock_init(&dev->port[i].mp.mpi_lock);
3694 rwlock_init(&dev->port[i].roce.netdev_lock);
3695 dev->port[i].roce.dev = dev;
3696 dev->port[i].roce.native_port_num = i + 1;
3697 dev->port[i].roce.last_port_state = IB_PORT_DOWN;
4168 kfree(dev->port);
4401 dev->port = kcalloc(num_ports, sizeof(*dev->port),
4403 if (!dev->port) {
4418 kfree(dev->port);