mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 06:33:34 +00:00
RDMA/mana_ib: Implement port parameters
Implement port parameters for RNIC: 1) extend query_port() method 2) implement get_link_layer() 3) implement query_pkey() Only port 1 can store GIDs. Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com> Link: https://lore.kernel.org/r/1712738551-22075-4-git-send-email-kotaranov@linux.microsoft.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
1a79c2b9d4
commit
4bda1d5332
@ -29,12 +29,14 @@ static const struct ib_device_ops mana_ib_dev_ops = {
|
|||||||
.destroy_rwq_ind_table = mana_ib_destroy_rwq_ind_table,
|
.destroy_rwq_ind_table = mana_ib_destroy_rwq_ind_table,
|
||||||
.destroy_wq = mana_ib_destroy_wq,
|
.destroy_wq = mana_ib_destroy_wq,
|
||||||
.disassociate_ucontext = mana_ib_disassociate_ucontext,
|
.disassociate_ucontext = mana_ib_disassociate_ucontext,
|
||||||
|
.get_link_layer = mana_ib_get_link_layer,
|
||||||
.get_port_immutable = mana_ib_get_port_immutable,
|
.get_port_immutable = mana_ib_get_port_immutable,
|
||||||
.mmap = mana_ib_mmap,
|
.mmap = mana_ib_mmap,
|
||||||
.modify_qp = mana_ib_modify_qp,
|
.modify_qp = mana_ib_modify_qp,
|
||||||
.modify_wq = mana_ib_modify_wq,
|
.modify_wq = mana_ib_modify_wq,
|
||||||
.query_device = mana_ib_query_device,
|
.query_device = mana_ib_query_device,
|
||||||
.query_gid = mana_ib_query_gid,
|
.query_gid = mana_ib_query_gid,
|
||||||
|
.query_pkey = mana_ib_query_pkey,
|
||||||
.query_port = mana_ib_query_port,
|
.query_port = mana_ib_query_port,
|
||||||
.reg_user_mr = mana_ib_reg_user_mr,
|
.reg_user_mr = mana_ib_reg_user_mr,
|
||||||
|
|
||||||
|
@ -555,7 +555,42 @@ int mana_ib_query_device(struct ib_device *ibdev, struct ib_device_attr *props,
|
|||||||
int mana_ib_query_port(struct ib_device *ibdev, u32 port,
|
int mana_ib_query_port(struct ib_device *ibdev, u32 port,
|
||||||
struct ib_port_attr *props)
|
struct ib_port_attr *props)
|
||||||
{
|
{
|
||||||
/* This version doesn't return port properties */
|
struct net_device *ndev = mana_ib_get_netdev(ibdev, port);
|
||||||
|
|
||||||
|
if (!ndev)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
memset(props, 0, sizeof(*props));
|
||||||
|
props->max_mtu = IB_MTU_4096;
|
||||||
|
props->active_mtu = ib_mtu_int_to_enum(ndev->mtu);
|
||||||
|
|
||||||
|
if (netif_carrier_ok(ndev) && netif_running(ndev)) {
|
||||||
|
props->state = IB_PORT_ACTIVE;
|
||||||
|
props->phys_state = IB_PORT_PHYS_STATE_LINK_UP;
|
||||||
|
} else {
|
||||||
|
props->state = IB_PORT_DOWN;
|
||||||
|
props->phys_state = IB_PORT_PHYS_STATE_DISABLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
props->active_width = IB_WIDTH_4X;
|
||||||
|
props->active_speed = IB_SPEED_EDR;
|
||||||
|
props->pkey_tbl_len = 1;
|
||||||
|
if (port == 1)
|
||||||
|
props->gid_tbl_len = 16;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum rdma_link_layer mana_ib_get_link_layer(struct ib_device *device, u32 port_num)
|
||||||
|
{
|
||||||
|
return IB_LINK_LAYER_ETHERNET;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mana_ib_query_pkey(struct ib_device *ibdev, u32 port, u16 index, u16 *pkey)
|
||||||
|
{
|
||||||
|
if (index != 0)
|
||||||
|
return -EINVAL;
|
||||||
|
*pkey = IB_DEFAULT_PKEY_FULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -266,4 +266,8 @@ void mana_ib_destroy_eqs(struct mana_ib_dev *mdev);
|
|||||||
int mana_ib_gd_create_rnic_adapter(struct mana_ib_dev *mdev);
|
int mana_ib_gd_create_rnic_adapter(struct mana_ib_dev *mdev);
|
||||||
|
|
||||||
int mana_ib_gd_destroy_rnic_adapter(struct mana_ib_dev *mdev);
|
int mana_ib_gd_destroy_rnic_adapter(struct mana_ib_dev *mdev);
|
||||||
|
|
||||||
|
int mana_ib_query_pkey(struct ib_device *ibdev, u32 port, u16 index, u16 *pkey);
|
||||||
|
|
||||||
|
enum rdma_link_layer mana_ib_get_link_layer(struct ib_device *device, u32 port_num);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user