main.c (7a58779edd75c37352917e8fbc7769efce0e65b6) | main.c (7416790e22452bfa86de6b55638eacf7780c8f6f) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB 2/* 3 * Copyright (c) 2013-2020, Mellanox Technologies inc. All rights reserved. 4 * Copyright (c) 2020, Intel Corporation. All rights reserved. 5 */ 6 7#include <linux/debugfs.h> 8#include <linux/highmem.h> --- 2950 unchanged lines hidden (view full) --- 2959static void get_ext_port_caps(struct mlx5_ib_dev *dev) 2960{ 2961 int port; 2962 2963 for (port = 1; port <= dev->num_ports; port++) 2964 mlx5_query_ext_port_caps(dev, port); 2965} 2966 | 1// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB 2/* 3 * Copyright (c) 2013-2020, Mellanox Technologies inc. All rights reserved. 4 * Copyright (c) 2020, Intel Corporation. All rights reserved. 5 */ 6 7#include <linux/debugfs.h> 8#include <linux/highmem.h> --- 2950 unchanged lines hidden (view full) --- 2959static void get_ext_port_caps(struct mlx5_ib_dev *dev) 2960{ 2961 int port; 2962 2963 for (port = 1; port <= dev->num_ports; port++) 2964 mlx5_query_ext_port_caps(dev, port); 2965} 2966 |
2967static int __get_port_caps(struct mlx5_ib_dev *dev, u8 port) 2968{ 2969 struct ib_port_attr *pprops = NULL; 2970 int err = -ENOMEM; 2971 2972 pprops = kzalloc(sizeof(*pprops), GFP_KERNEL); 2973 if (!pprops) 2974 goto out; 2975 2976 err = mlx5_ib_query_port(&dev->ib_dev, port, pprops); 2977 if (err) { 2978 mlx5_ib_warn(dev, "query_port %d failed %d\n", 2979 port, err); 2980 goto out; 2981 } 2982 2983 dev->port_caps[port - 1].gid_table_len = pprops->gid_tbl_len; 2984 mlx5_ib_dbg(dev, "port %d: pkey_table_len %d, gid_table_len %d\n", 2985 port, dev->pkey_table_len, pprops->gid_tbl_len); 2986 2987out: 2988 kfree(pprops); 2989 return err; 2990} 2991 2992static int get_port_caps(struct mlx5_ib_dev *dev, u8 port) 2993{ 2994 /* For representors use port 1, is this is the only native 2995 * port 2996 */ 2997 if (dev->is_rep) 2998 return __get_port_caps(dev, 1); 2999 return __get_port_caps(dev, port); 3000} 3001 | |
3002static u8 mlx5_get_umr_fence(u8 umr_fence_cap) 3003{ 3004 switch (umr_fence_cap) { 3005 case MLX5_CAP_UMR_FENCE_NONE: 3006 return MLX5_FENCE_MODE_NONE; 3007 case MLX5_CAP_UMR_FENCE_SMALL: 3008 return MLX5_FENCE_MODE_INITIATOR_SMALL; 3009 default: --- 457 unchanged lines hidden (view full) --- 3467 mpi->ibdev = ibdev; 3468 mpi->mdev_events.notifier_call = NULL; 3469 spin_unlock(&ibdev->port[port_num].mp.mpi_lock); 3470 3471 err = mlx5_nic_vport_affiliate_multiport(ibdev->mdev, mpi->mdev); 3472 if (err) 3473 goto unbind; 3474 | 2967static u8 mlx5_get_umr_fence(u8 umr_fence_cap) 2968{ 2969 switch (umr_fence_cap) { 2970 case MLX5_CAP_UMR_FENCE_NONE: 2971 return MLX5_FENCE_MODE_NONE; 2972 case MLX5_CAP_UMR_FENCE_SMALL: 2973 return MLX5_FENCE_MODE_INITIATOR_SMALL; 2974 default: --- 457 unchanged lines hidden (view full) --- 3432 mpi->ibdev = ibdev; 3433 mpi->mdev_events.notifier_call = NULL; 3434 spin_unlock(&ibdev->port[port_num].mp.mpi_lock); 3435 3436 err = mlx5_nic_vport_affiliate_multiport(ibdev->mdev, mpi->mdev); 3437 if (err) 3438 goto unbind; 3439 |
3475 err = get_port_caps(ibdev, mlx5_core_native_port_num(mpi->mdev)); 3476 if (err) 3477 goto unbind; 3478 | |
3479 err = mlx5_add_netdev_notifier(ibdev, port_num); 3480 if (err) { 3481 mlx5_ib_err(ibdev, "failed adding netdev notifier for port %u\n", 3482 port_num + 1); 3483 goto unbind; 3484 } 3485 3486 mpi->mdev_events.notifier_call = mlx5_ib_event_slave_port; --- 61 unchanged lines hidden (view full) --- 3548 if (bound) { 3549 dev_dbg(mpi->mdev->device, 3550 "removing port from unaffiliated list.\n"); 3551 mlx5_ib_dbg(dev, "port %d bound\n", i + 1); 3552 list_del(&mpi->list); 3553 break; 3554 } 3555 } | 3440 err = mlx5_add_netdev_notifier(ibdev, port_num); 3441 if (err) { 3442 mlx5_ib_err(ibdev, "failed adding netdev notifier for port %u\n", 3443 port_num + 1); 3444 goto unbind; 3445 } 3446 3447 mpi->mdev_events.notifier_call = mlx5_ib_event_slave_port; --- 61 unchanged lines hidden (view full) --- 3509 if (bound) { 3510 dev_dbg(mpi->mdev->device, 3511 "removing port from unaffiliated list.\n"); 3512 mlx5_ib_dbg(dev, "port %d bound\n", i + 1); 3513 list_del(&mpi->list); 3514 break; 3515 } 3516 } |
3556 if (!bound) { 3557 get_port_caps(dev, i + 1); | 3517 if (!bound) |
3558 mlx5_ib_dbg(dev, "no free port found for port %d\n", 3559 i + 1); | 3518 mlx5_ib_dbg(dev, "no free port found for port %d\n", 3519 i + 1); |
3560 } | |
3561 } 3562 3563 list_add_tail(&dev->ib_dev_list, &mlx5_ib_dev_list); 3564 mutex_unlock(&mlx5_ib_multiport_mutex); 3565 return err; 3566} 3567 3568static void mlx5_ib_cleanup_multiport_master(struct mlx5_ib_dev *dev) --- 366 unchanged lines hidden (view full) --- 3935 err = mlx5_ib_init_multiport_master(dev); 3936 if (err) 3937 return err; 3938 3939 err = set_has_smi_cap(dev); 3940 if (err) 3941 goto err_mp; 3942 | 3520 } 3521 3522 list_add_tail(&dev->ib_dev_list, &mlx5_ib_dev_list); 3523 mutex_unlock(&mlx5_ib_multiport_mutex); 3524 return err; 3525} 3526 3527static void mlx5_ib_cleanup_multiport_master(struct mlx5_ib_dev *dev) --- 366 unchanged lines hidden (view full) --- 3894 err = mlx5_ib_init_multiport_master(dev); 3895 if (err) 3896 return err; 3897 3898 err = set_has_smi_cap(dev); 3899 if (err) 3900 goto err_mp; 3901 |
3943 if (!mlx5_core_mp_enabled(mdev)) { 3944 for (i = 1; i <= dev->num_ports; i++) { 3945 err = get_port_caps(dev, i); 3946 if (err) 3947 break; 3948 } 3949 } else { 3950 err = get_port_caps(dev, mlx5_core_native_port_num(mdev)); 3951 } 3952 if (err) 3953 goto err_mp; 3954 | |
3955 err = mlx5_query_max_pkeys(&dev->ib_dev, &dev->pkey_table_len); 3956 if (err) 3957 goto err_mp; 3958 3959 if (mlx5_use_mad_ifc(dev)) 3960 get_ext_port_caps(dev); 3961 3962 dev->ib_dev.node_type = RDMA_NODE_IB_CA; --- 909 unchanged lines hidden --- | 3902 err = mlx5_query_max_pkeys(&dev->ib_dev, &dev->pkey_table_len); 3903 if (err) 3904 goto err_mp; 3905 3906 if (mlx5_use_mad_ifc(dev)) 3907 get_ext_port_caps(dev); 3908 3909 dev->ib_dev.node_type = RDMA_NODE_IB_CA; --- 909 unchanged lines hidden --- |