Lines Matching refs:devlink_port

146 #define ASSERT_DEVLINK_PORT_REGISTERED(devlink_port)				\  argument
147 WARN_ON_ONCE(!(devlink_port)->registered)
148 #define ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port) \ argument
149 WARN_ON_ONCE((devlink_port)->registered)
150 #define ASSERT_DEVLINK_PORT_INITIALIZED(devlink_port) \ argument
151 WARN_ON_ONCE(!(devlink_port)->initialized)
153 static struct devlink_port *devlink_port_get_by_index(struct devlink *devlink, in devlink_port_get_by_index()
159 struct devlink_port *devlink_port_get_from_attrs(struct devlink *devlink, in devlink_port_get_from_attrs()
164 struct devlink_port *devlink_port; in devlink_port_get_from_attrs() local
166 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_get_from_attrs()
167 if (!devlink_port) in devlink_port_get_from_attrs()
169 return devlink_port; in devlink_port_get_from_attrs()
174 struct devlink_port *devlink_port_get_from_info(struct devlink *devlink, in devlink_port_get_from_info()
196 struct devlink_port *devlink_port; in devlink_rate_leaf_get_from_info() local
198 devlink_port = devlink_port_get_from_attrs(devlink, info->attrs); in devlink_rate_leaf_get_from_info()
199 if (IS_ERR(devlink_port)) in devlink_rate_leaf_get_from_info()
200 return ERR_CAST(devlink_port); in devlink_rate_leaf_get_from_info()
201 devlink_rate = devlink_port->devlink_rate; in devlink_rate_leaf_get_from_info()
451 struct devlink_port *devlink_port, in devlink_port_fn_roce_fill() argument
461 err = ops->port_fn_roce_get(devlink_port, &is_enable, extack); in devlink_port_fn_roce_fill()
473 struct devlink_port *devlink_port, in devlink_port_fn_migratable_fill() argument
481 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) in devlink_port_fn_migratable_fill()
484 err = ops->port_fn_migratable_get(devlink_port, &is_enable, extack); in devlink_port_fn_migratable_fill()
496 struct devlink_port *devlink_port, in devlink_port_fn_caps_fill() argument
504 err = devlink_port_fn_roce_fill(ops, devlink_port, &caps, extack); in devlink_port_fn_caps_fill()
508 err = devlink_port_fn_migratable_fill(ops, devlink_port, &caps, extack); in devlink_port_fn_caps_fill()
535 struct devlink_port *port;
571 devlink_port_region_get_by_name(struct devlink_port *port, in devlink_port_region_get_by_name()
613 int devlink_nl_port_handle_fill(struct sk_buff *msg, struct devlink_port *devlink_port) in devlink_nl_port_handle_fill() argument
615 if (devlink_nl_put_handle(msg, devlink_port->devlink)) in devlink_nl_port_handle_fill()
617 if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) in devlink_nl_port_handle_fill()
622 size_t devlink_nl_port_handle_size(struct devlink_port *devlink_port) in devlink_nl_port_handle_size() argument
624 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_handle_size()
632 struct devlink_port *devlink_port) in devlink_nl_port_attrs_put() argument
634 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_nl_port_attrs_put()
636 if (!devlink_port->attrs_set) in devlink_nl_port_attrs_put()
646 switch (devlink_port->attrs.flavour) { in devlink_nl_port_attrs_put()
695 struct devlink_port *port, in devlink_port_fn_hw_addr_fill()
741 devlink_rate->devlink_port->index)) in devlink_nl_rate_fill()
793 struct devlink_port *port, in devlink_port_fn_state_fill()
829 devlink_port_fn_mig_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_mig_set() argument
832 const struct devlink_ops *ops = devlink_port->devlink->ops; in devlink_port_fn_mig_set()
834 return ops->port_fn_migratable_set(devlink_port, enable, extack); in devlink_port_fn_mig_set()
838 devlink_port_fn_roce_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_roce_set() argument
841 const struct devlink_ops *ops = devlink_port->devlink->ops; in devlink_port_fn_roce_set()
843 return ops->port_fn_roce_set(devlink_port, enable, extack); in devlink_port_fn_roce_set()
846 static int devlink_port_fn_caps_set(struct devlink_port *devlink_port, in devlink_port_fn_caps_set() argument
857 err = devlink_port_fn_roce_set(devlink_port, in devlink_port_fn_caps_set()
864 err = devlink_port_fn_mig_set(devlink_port, caps_value & in devlink_port_fn_caps_set()
874 devlink_nl_port_function_attrs_put(struct sk_buff *msg, struct devlink_port *port, in devlink_nl_port_function_attrs_put()
905 struct devlink_port *devlink_port, in devlink_nl_port_fill() argument
909 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_fill()
918 if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) in devlink_nl_port_fill()
921 spin_lock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
922 if (nla_put_u16(msg, DEVLINK_ATTR_PORT_TYPE, devlink_port->type)) in devlink_nl_port_fill()
924 if (devlink_port->desired_type != DEVLINK_PORT_TYPE_NOTSET && in devlink_nl_port_fill()
926 devlink_port->desired_type)) in devlink_nl_port_fill()
928 if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) { in devlink_nl_port_fill()
929 if (devlink_port->type_eth.netdev && in devlink_nl_port_fill()
931 devlink_port->type_eth.ifindex) || in devlink_nl_port_fill()
933 devlink_port->type_eth.ifname))) in devlink_nl_port_fill()
936 if (devlink_port->type == DEVLINK_PORT_TYPE_IB) { in devlink_nl_port_fill()
937 struct ib_device *ibdev = devlink_port->type_ib.ibdev; in devlink_nl_port_fill()
944 spin_unlock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
945 if (devlink_nl_port_attrs_put(msg, devlink_port)) in devlink_nl_port_fill()
947 if (devlink_nl_port_function_attrs_put(msg, devlink_port, extack)) in devlink_nl_port_fill()
949 if (devlink_port->linecard && in devlink_nl_port_fill()
951 devlink_port->linecard->index)) in devlink_nl_port_fill()
958 spin_unlock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
964 static void devlink_port_notify(struct devlink_port *devlink_port, in devlink_port_notify() argument
967 struct devlink *devlink = devlink_port->devlink; in devlink_port_notify()
980 err = devlink_nl_port_fill(msg, devlink_port, cmd, 0, 0, 0, NULL); in devlink_port_notify()
1087 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_port_get_doit() local
1095 err = devlink_nl_port_fill(msg, devlink_port, DEVLINK_CMD_PORT_NEW, in devlink_nl_cmd_port_get_doit()
1111 struct devlink_port *devlink_port; in devlink_nl_cmd_port_get_dump_one() local
1115 xa_for_each_start(&devlink->ports, port_index, devlink_port, state->idx) { in devlink_nl_cmd_port_get_dump_one()
1116 err = devlink_nl_port_fill(msg, devlink_port, in devlink_nl_cmd_port_get_dump_one()
1134 static int devlink_port_type_set(struct devlink_port *devlink_port, in devlink_port_type_set() argument
1140 if (!devlink_port->devlink->ops->port_type_set) in devlink_port_type_set()
1143 if (port_type == devlink_port->type) in devlink_port_type_set()
1146 err = devlink_port->devlink->ops->port_type_set(devlink_port, in devlink_port_type_set()
1151 devlink_port->desired_type = port_type; in devlink_port_type_set()
1152 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devlink_port_type_set()
1156 static int devlink_port_function_hw_addr_set(struct devlink_port *port, in devlink_port_function_hw_addr_set()
1185 static int devlink_port_fn_state_set(struct devlink_port *port, in devlink_port_fn_state_set()
1197 static int devlink_port_function_validate(struct devlink_port *devlink_port, in devlink_port_function_validate() argument
1201 const struct devlink_ops *ops = devlink_port->devlink->ops; in devlink_port_function_validate()
1232 if (devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) { in devlink_port_function_validate()
1242 static int devlink_port_function_set(struct devlink_port *port, in devlink_port_function_set()
1290 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_port_set_doit() local
1297 err = devlink_port_type_set(devlink_port, port_type); in devlink_nl_cmd_port_set_doit()
1306 err = devlink_port_function_set(devlink_port, attr, extack); in devlink_nl_cmd_port_set_doit()
1317 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_port_split_doit() local
1328 if (!devlink_port->attrs.splittable) { in devlink_nl_cmd_port_split_doit()
1330 if (devlink_port->attrs.split) in devlink_nl_cmd_port_split_doit()
1337 if (count < 2 || !is_power_of_2(count) || count > devlink_port->attrs.lanes) { in devlink_nl_cmd_port_split_doit()
1342 return devlink->ops->port_split(devlink, devlink_port, count, in devlink_nl_cmd_port_split_doit()
1349 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_port_unsplit_doit() local
1354 return devlink->ops->port_unsplit(devlink, devlink_port, info->extack); in devlink_nl_cmd_port_unsplit_doit()
1361 struct devlink_port *devlink_port; in devlink_port_new_notify() local
1370 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_new_notify()
1371 if (!devlink_port) { in devlink_port_new_notify()
1376 err = devlink_nl_port_fill(msg, devlink_port, DEVLINK_CMD_NEW, in devlink_port_new_notify()
2353 struct devlink_port *devlink_port, in devlink_nl_sb_port_pool_fill() argument
2364 err = ops->sb_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
2375 if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) in devlink_nl_sb_port_pool_fill()
2388 err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
2413 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_sb_port_pool_get_doit() local
2414 struct devlink *devlink = devlink_port->devlink; in devlink_nl_cmd_sb_port_pool_get_doit()
2436 err = devlink_nl_sb_port_pool_fill(msg, devlink, devlink_port, in devlink_nl_cmd_sb_port_pool_get_doit()
2453 struct devlink_port *devlink_port; in __sb_port_pool_get_dumpit() local
2459 xa_for_each(&devlink->ports, port_index, devlink_port) { in __sb_port_pool_get_dumpit()
2466 devlink_port, in __sb_port_pool_get_dumpit()
2513 static int devlink_sb_port_pool_set(struct devlink_port *devlink_port, in devlink_sb_port_pool_set() argument
2519 const struct devlink_ops *ops = devlink_port->devlink->ops; in devlink_sb_port_pool_set()
2522 return ops->sb_port_pool_set(devlink_port, sb_index, in devlink_sb_port_pool_set()
2530 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_sb_port_pool_set_doit() local
2550 return devlink_sb_port_pool_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_port_pool_set_doit()
2556 struct devlink_port *devlink_port, in devlink_nl_sb_tc_pool_bind_fill() argument
2568 err = ops->sb_tc_pool_bind_get(devlink_port, devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
2580 if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) in devlink_nl_sb_tc_pool_bind_fill()
2597 err = ops->sb_occ_tc_port_bind_get(devlink_port, in devlink_nl_sb_tc_pool_bind_fill()
2622 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_sb_tc_pool_bind_get_doit() local
2623 struct devlink *devlink = devlink_port->devlink; in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
2650 err = devlink_nl_sb_tc_pool_bind_fill(msg, devlink, devlink_port, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
2669 struct devlink_port *devlink_port; in __sb_tc_pool_bind_get_dumpit() local
2674 xa_for_each(&devlink->ports, port_index, devlink_port) { in __sb_tc_pool_bind_get_dumpit()
2682 devlink_port, in __sb_tc_pool_bind_get_dumpit()
2700 devlink_port, in __sb_tc_pool_bind_get_dumpit()
2748 static int devlink_sb_tc_pool_bind_set(struct devlink_port *devlink_port, in devlink_sb_tc_pool_bind_set() argument
2755 const struct devlink_ops *ops = devlink_port->devlink->ops; in devlink_sb_tc_pool_bind_set()
2758 return ops->sb_tc_pool_bind_set(devlink_port, sb_index, in devlink_sb_tc_pool_bind_set()
2767 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_cmd_sb_tc_pool_bind_set_doit() local
2798 return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
4813 struct devlink_port *port = NULL; in devlink_nl_cmd_region_get_doit()
4857 struct devlink_port *port, in devlink_nl_cmd_region_get_port_dumpit()
4889 struct devlink_port *port; in devlink_nl_cmd_region_get_dump_one()
4932 struct devlink_port *port = NULL; in devlink_nl_cmd_region_del()
4978 struct devlink_port *port = NULL; in devlink_nl_cmd_region_new()
5212 struct devlink_port *port = NULL; in devlink_nl_cmd_region_read_dumpit()
6699 struct devlink_port *devlink_port; in devlink_notify_register() local
6710 xa_for_each(&devlink->ports, port_index, devlink_port) in devlink_notify_register()
6711 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devlink_notify_register()
6741 struct devlink_port *devlink_port; in devlink_notify_unregister() local
6768 xa_for_each(&devlink->ports, port_index, devlink_port) in devlink_notify_unregister()
6769 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_DEL); in devlink_notify_unregister()
6778 static bool devlink_port_type_should_warn(struct devlink_port *devlink_port) in devlink_port_type_should_warn() argument
6781 return devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_CPU && in devlink_port_type_should_warn()
6782 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_DSA && in devlink_port_type_should_warn()
6783 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_UNUSED; in devlink_port_type_should_warn()
6788 static void devlink_port_type_warn_schedule(struct devlink_port *devlink_port) in devlink_port_type_warn_schedule() argument
6790 if (!devlink_port_type_should_warn(devlink_port)) in devlink_port_type_warn_schedule()
6795 schedule_delayed_work(&devlink_port->type_warn_dw, in devlink_port_type_warn_schedule()
6799 static void devlink_port_type_warn_cancel(struct devlink_port *devlink_port) in devlink_port_type_warn_cancel() argument
6801 if (!devlink_port_type_should_warn(devlink_port)) in devlink_port_type_warn_cancel()
6803 cancel_delayed_work_sync(&devlink_port->type_warn_dw); in devlink_port_type_warn_cancel()
6818 struct devlink_port *devlink_port) in devlink_port_init() argument
6820 if (devlink_port->initialized) in devlink_port_init()
6822 devlink_port->devlink = devlink; in devlink_port_init()
6823 INIT_LIST_HEAD(&devlink_port->region_list); in devlink_port_init()
6824 devlink_port->initialized = true; in devlink_port_init()
6838 void devlink_port_fini(struct devlink_port *devlink_port) in devlink_port_fini() argument
6840 WARN_ON(!list_empty(&devlink_port->region_list)); in devlink_port_fini()
6858 struct devlink_port *devlink_port, in devl_port_register() argument
6865 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devl_port_register()
6867 devlink_port_init(devlink, devlink_port); in devl_port_register()
6868 devlink_port->registered = true; in devl_port_register()
6869 devlink_port->index = port_index; in devl_port_register()
6870 spin_lock_init(&devlink_port->type_lock); in devl_port_register()
6871 INIT_LIST_HEAD(&devlink_port->reporter_list); in devl_port_register()
6872 err = xa_insert(&devlink->ports, port_index, devlink_port, GFP_KERNEL); in devl_port_register()
6876 INIT_DELAYED_WORK(&devlink_port->type_warn_dw, &devlink_port_type_warn); in devl_port_register()
6877 devlink_port_type_warn_schedule(devlink_port); in devl_port_register()
6878 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devl_port_register()
6899 struct devlink_port *devlink_port, in devlink_port_register() argument
6905 err = devl_port_register(devlink, devlink_port, port_index); in devlink_port_register()
6916 void devl_port_unregister(struct devlink_port *devlink_port) in devl_port_unregister() argument
6918 lockdep_assert_held(&devlink_port->devlink->lock); in devl_port_unregister()
6919 WARN_ON(devlink_port->type != DEVLINK_PORT_TYPE_NOTSET); in devl_port_unregister()
6921 devlink_port_type_warn_cancel(devlink_port); in devl_port_unregister()
6922 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_DEL); in devl_port_unregister()
6923 xa_erase(&devlink_port->devlink->ports, devlink_port->index); in devl_port_unregister()
6924 WARN_ON(!list_empty(&devlink_port->reporter_list)); in devl_port_unregister()
6925 devlink_port->registered = false; in devl_port_unregister()
6936 void devlink_port_unregister(struct devlink_port *devlink_port) in devlink_port_unregister() argument
6938 struct devlink *devlink = devlink_port->devlink; in devlink_port_unregister()
6941 devl_port_unregister(devlink_port); in devlink_port_unregister()
6946 static void devlink_port_type_netdev_checks(struct devlink_port *devlink_port, in devlink_port_type_netdev_checks() argument
6983 static void __devlink_port_type_set(struct devlink_port *devlink_port, in __devlink_port_type_set() argument
6989 ASSERT_DEVLINK_PORT_REGISTERED(devlink_port); in __devlink_port_type_set()
6992 devlink_port_type_warn_schedule(devlink_port); in __devlink_port_type_set()
6994 devlink_port_type_warn_cancel(devlink_port); in __devlink_port_type_set()
6996 devlink_port_type_netdev_checks(devlink_port, netdev); in __devlink_port_type_set()
6999 spin_lock_bh(&devlink_port->type_lock); in __devlink_port_type_set()
7000 devlink_port->type = type; in __devlink_port_type_set()
7003 devlink_port->type_eth.netdev = netdev; in __devlink_port_type_set()
7006 devlink_port->type_eth.ifindex = netdev->ifindex; in __devlink_port_type_set()
7007 BUILD_BUG_ON(sizeof(devlink_port->type_eth.ifname) != in __devlink_port_type_set()
7009 strcpy(devlink_port->type_eth.ifname, netdev->name); in __devlink_port_type_set()
7013 devlink_port->type_ib.ibdev = type_dev; in __devlink_port_type_set()
7018 spin_unlock_bh(&devlink_port->type_lock); in __devlink_port_type_set()
7019 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in __devlink_port_type_set()
7029 void devlink_port_type_eth_set(struct devlink_port *devlink_port) in devlink_port_type_eth_set() argument
7031 dev_warn(devlink_port->devlink->dev, in devlink_port_type_eth_set()
7033 devlink_port->index); in devlink_port_type_eth_set()
7034 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_ETH, NULL); in devlink_port_type_eth_set()
7044 void devlink_port_type_ib_set(struct devlink_port *devlink_port, in devlink_port_type_ib_set() argument
7047 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_IB, ibdev); in devlink_port_type_ib_set()
7059 void devlink_port_type_clear(struct devlink_port *devlink_port) in devlink_port_type_clear() argument
7061 if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) in devlink_port_type_clear()
7062 dev_warn(devlink_port->devlink->dev, in devlink_port_type_clear()
7064 devlink_port->index); in devlink_port_type_clear()
7065 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_NOTSET, NULL); in devlink_port_type_clear()
7073 struct devlink_port *devlink_port = netdev->devlink_port; in devlink_port_netdevice_event() local
7078 if (!devlink_port || devlink_port->devlink != devlink) in devlink_port_netdevice_event()
7087 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_ETH, in devlink_port_netdevice_event()
7099 __devlink_port_type_set(devlink_port, devlink_port->type, in devlink_port_netdevice_event()
7109 __devlink_port_type_set(devlink_port, devlink_port->type, in devlink_port_netdevice_event()
7116 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_NOTSET, in devlink_port_netdevice_event()
7124 static int __devlink_port_attrs_set(struct devlink_port *devlink_port, in __devlink_port_attrs_set() argument
7127 struct devlink_port_attrs *attrs = &devlink_port->attrs; in __devlink_port_attrs_set()
7129 devlink_port->attrs_set = true; in __devlink_port_attrs_set()
7132 devlink_port->switch_port = true; in __devlink_port_attrs_set()
7136 devlink_port->switch_port = false; in __devlink_port_attrs_set()
7147 void devlink_port_attrs_set(struct devlink_port *devlink_port, in devlink_port_attrs_set() argument
7152 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_set()
7154 devlink_port->attrs = *attrs; in devlink_port_attrs_set()
7155 ret = __devlink_port_attrs_set(devlink_port, attrs->flavour); in devlink_port_attrs_set()
7170 void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_pf_set() argument
7173 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_pf_set()
7176 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_pf_set()
7178 ret = __devlink_port_attrs_set(devlink_port, in devlink_port_attrs_pci_pf_set()
7197 void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_vf_set() argument
7200 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_vf_set()
7203 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_vf_set()
7205 ret = __devlink_port_attrs_set(devlink_port, in devlink_port_attrs_pci_vf_set()
7225 void devlink_port_attrs_pci_sf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_sf_set() argument
7228 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_sf_set()
7231 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_sf_set()
7233 ret = __devlink_port_attrs_set(devlink_port, in devlink_port_attrs_pci_sf_set()
7297 int devl_rate_leaf_create(struct devlink_port *devlink_port, void *priv, in devl_rate_leaf_create() argument
7300 struct devlink *devlink = devlink_port->devlink; in devl_rate_leaf_create()
7303 devl_assert_locked(devlink_port->devlink); in devl_rate_leaf_create()
7305 if (WARN_ON(devlink_port->devlink_rate)) in devl_rate_leaf_create()
7319 devlink_rate->devlink_port = devlink_port; in devl_rate_leaf_create()
7322 devlink_port->devlink_rate = devlink_rate; in devl_rate_leaf_create()
7336 void devl_rate_leaf_destroy(struct devlink_port *devlink_port) in devl_rate_leaf_destroy() argument
7338 struct devlink_rate *devlink_rate = devlink_port->devlink_rate; in devl_rate_leaf_destroy()
7340 devl_assert_locked(devlink_port->devlink); in devl_rate_leaf_destroy()
7348 devlink_port->devlink_rate = NULL; in devl_rate_leaf_destroy()
7396 void devlink_port_linecard_set(struct devlink_port *devlink_port, in devlink_port_linecard_set() argument
7399 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_linecard_set()
7401 devlink_port->linecard = linecard; in devlink_port_linecard_set()
7405 static int __devlink_port_phys_port_name_get(struct devlink_port *devlink_port, in __devlink_port_phys_port_name_get() argument
7408 struct devlink_port_attrs *attrs = &devlink_port->attrs; in __devlink_port_phys_port_name_get()
7411 if (!devlink_port->attrs_set) in __devlink_port_phys_port_name_get()
7416 if (devlink_port->linecard) in __devlink_port_phys_port_name_get()
7418 devlink_port->linecard->index); in __devlink_port_phys_port_name_get()
8490 devlink_port_region_create(struct devlink_port *port, in devlink_port_region_create()
9124 struct devlink_port *in_devlink_port, in devlink_trap_report_metadata_set()
9147 void *trap_ctx, struct devlink_port *in_devlink_port, in devlink_trap_report()
9501 struct devlink_port *devlink_port; in devlink_compat_phys_port_name_get() local
9509 devlink_port = dev->devlink_port; in devlink_compat_phys_port_name_get()
9510 if (!devlink_port) in devlink_compat_phys_port_name_get()
9513 return __devlink_port_phys_port_name_get(devlink_port, name, len); in devlink_compat_phys_port_name_get()
9519 struct devlink_port *devlink_port; in devlink_compat_switch_id_get() local
9525 devlink_port = dev->devlink_port; in devlink_compat_switch_id_get()
9526 if (!devlink_port || !devlink_port->switch_port) in devlink_compat_switch_id_get()
9529 memcpy(ppid, &devlink_port->attrs.switch_id, sizeof(*ppid)); in devlink_compat_switch_id_get()