Lines Matching refs:devlink_port
22 #define ASSERT_DEVLINK_PORT_REGISTERED(devlink_port) \ argument
23 WARN_ON_ONCE(!(devlink_port)->registered)
24 #define ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port) \ argument
25 WARN_ON_ONCE((devlink_port)->registered)
27 struct devlink_port *devlink_port_get_by_index(struct devlink *devlink, in devlink_port_get_by_index()
33 struct devlink_port *devlink_port_get_from_attrs(struct devlink *devlink, in devlink_port_get_from_attrs()
38 struct devlink_port *devlink_port; in devlink_port_get_from_attrs() local
40 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_get_from_attrs()
41 if (!devlink_port) in devlink_port_get_from_attrs()
43 return devlink_port; in devlink_port_get_from_attrs()
48 struct devlink_port *devlink_port_get_from_info(struct devlink *devlink, in devlink_port_get_from_info()
62 static int devlink_port_fn_roce_fill(struct devlink_port *devlink_port, in devlink_port_fn_roce_fill() argument
69 if (!devlink_port->ops->port_fn_roce_get) in devlink_port_fn_roce_fill()
72 err = devlink_port->ops->port_fn_roce_get(devlink_port, &is_enable, in devlink_port_fn_roce_fill()
84 static int devlink_port_fn_migratable_fill(struct devlink_port *devlink_port, in devlink_port_fn_migratable_fill() argument
91 if (!devlink_port->ops->port_fn_migratable_get || in devlink_port_fn_migratable_fill()
92 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) in devlink_port_fn_migratable_fill()
95 err = devlink_port->ops->port_fn_migratable_get(devlink_port, in devlink_port_fn_migratable_fill()
107 static int devlink_port_fn_ipsec_crypto_fill(struct devlink_port *devlink_port, in devlink_port_fn_ipsec_crypto_fill() argument
114 if (!devlink_port->ops->port_fn_ipsec_crypto_get || in devlink_port_fn_ipsec_crypto_fill()
115 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) in devlink_port_fn_ipsec_crypto_fill()
118 err = devlink_port->ops->port_fn_ipsec_crypto_get(devlink_port, &is_enable, extack); in devlink_port_fn_ipsec_crypto_fill()
129 static int devlink_port_fn_ipsec_packet_fill(struct devlink_port *devlink_port, in devlink_port_fn_ipsec_packet_fill() argument
136 if (!devlink_port->ops->port_fn_ipsec_packet_get || in devlink_port_fn_ipsec_packet_fill()
137 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) in devlink_port_fn_ipsec_packet_fill()
140 err = devlink_port->ops->port_fn_ipsec_packet_get(devlink_port, &is_enable, extack); in devlink_port_fn_ipsec_packet_fill()
151 static int devlink_port_fn_caps_fill(struct devlink_port *devlink_port, in devlink_port_fn_caps_fill() argument
159 err = devlink_port_fn_roce_fill(devlink_port, &caps, extack); in devlink_port_fn_caps_fill()
163 err = devlink_port_fn_migratable_fill(devlink_port, &caps, extack); in devlink_port_fn_caps_fill()
167 err = devlink_port_fn_ipsec_crypto_fill(devlink_port, &caps, extack); in devlink_port_fn_caps_fill()
171 err = devlink_port_fn_ipsec_packet_fill(devlink_port, &caps, extack); in devlink_port_fn_caps_fill()
186 static int devlink_port_fn_max_io_eqs_fill(struct devlink_port *port, in devlink_port_fn_max_io_eqs_fill()
210 int devlink_nl_port_handle_fill(struct sk_buff *msg, struct devlink_port *devlink_port) in devlink_nl_port_handle_fill() argument
212 if (devlink_nl_put_handle(msg, devlink_port->devlink)) in devlink_nl_port_handle_fill()
214 if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) in devlink_nl_port_handle_fill()
219 size_t devlink_nl_port_handle_size(struct devlink_port *devlink_port) in devlink_nl_port_handle_size() argument
221 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_handle_size()
229 struct devlink_port *devlink_port) in devlink_nl_port_attrs_put() argument
231 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_nl_port_attrs_put()
233 if (!devlink_port->attrs_set) in devlink_nl_port_attrs_put()
243 switch (devlink_port->attrs.flavour) { in devlink_nl_port_attrs_put()
291 static int devlink_port_fn_hw_addr_fill(struct devlink_port *port, in devlink_port_fn_hw_addr_fill()
331 static int devlink_port_fn_state_fill(struct devlink_port *port, in devlink_port_fn_state_fill()
367 devlink_port_fn_mig_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_mig_set() argument
370 return devlink_port->ops->port_fn_migratable_set(devlink_port, enable, in devlink_port_fn_mig_set()
375 devlink_port_fn_roce_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_roce_set() argument
378 return devlink_port->ops->port_fn_roce_set(devlink_port, enable, in devlink_port_fn_roce_set()
383 devlink_port_fn_ipsec_crypto_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_ipsec_crypto_set() argument
386 return devlink_port->ops->port_fn_ipsec_crypto_set(devlink_port, enable, extack); in devlink_port_fn_ipsec_crypto_set()
390 devlink_port_fn_ipsec_packet_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_ipsec_packet_set() argument
393 return devlink_port->ops->port_fn_ipsec_packet_set(devlink_port, enable, extack); in devlink_port_fn_ipsec_packet_set()
396 static int devlink_port_fn_caps_set(struct devlink_port *devlink_port, in devlink_port_fn_caps_set() argument
407 err = devlink_port_fn_roce_set(devlink_port, in devlink_port_fn_caps_set()
414 err = devlink_port_fn_mig_set(devlink_port, caps_value & in devlink_port_fn_caps_set()
421 err = devlink_port_fn_ipsec_crypto_set(devlink_port, caps_value & in devlink_port_fn_caps_set()
428 err = devlink_port_fn_ipsec_packet_set(devlink_port, caps_value & in devlink_port_fn_caps_set()
438 devlink_port_fn_max_io_eqs_set(struct devlink_port *devlink_port, in devlink_port_fn_max_io_eqs_set() argument
445 return devlink_port->ops->port_fn_max_io_eqs_set(devlink_port, in devlink_port_fn_max_io_eqs_set()
450 devlink_nl_port_function_attrs_put(struct sk_buff *msg, struct devlink_port *port, in devlink_nl_port_function_attrs_put()
487 struct devlink_port *devlink_port, in devlink_nl_port_fill() argument
491 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_fill()
500 if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) in devlink_nl_port_fill()
503 spin_lock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
504 if (nla_put_u16(msg, DEVLINK_ATTR_PORT_TYPE, devlink_port->type)) in devlink_nl_port_fill()
506 if (devlink_port->desired_type != DEVLINK_PORT_TYPE_NOTSET && in devlink_nl_port_fill()
508 devlink_port->desired_type)) in devlink_nl_port_fill()
510 if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) { in devlink_nl_port_fill()
511 if (devlink_port->type_eth.netdev && in devlink_nl_port_fill()
513 devlink_port->type_eth.ifindex) || in devlink_nl_port_fill()
515 devlink_port->type_eth.ifname))) in devlink_nl_port_fill()
518 if (devlink_port->type == DEVLINK_PORT_TYPE_IB) { in devlink_nl_port_fill()
519 struct ib_device *ibdev = devlink_port->type_ib.ibdev; in devlink_nl_port_fill()
526 spin_unlock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
527 if (devlink_nl_port_attrs_put(msg, devlink_port)) in devlink_nl_port_fill()
529 if (devlink_nl_port_function_attrs_put(msg, devlink_port, extack)) in devlink_nl_port_fill()
531 if (devlink_port->linecard && in devlink_nl_port_fill()
533 devlink_linecard_index(devlink_port->linecard))) in devlink_nl_port_fill()
540 spin_unlock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
546 static void devlink_port_notify(struct devlink_port *devlink_port, in devlink_port_notify() argument
549 struct devlink *devlink = devlink_port->devlink; in devlink_port_notify()
563 err = devlink_nl_port_fill(msg, devlink_port, cmd, 0, 0, 0, NULL); in devlink_port_notify()
570 devlink_nl_obj_desc_port_set(&desc, devlink_port); in devlink_port_notify()
577 struct devlink_port *devlink_port; in devlink_ports_notify() local
580 xa_for_each(&devlink->ports, port_index, devlink_port) in devlink_ports_notify()
581 devlink_port_notify(devlink_port, cmd); in devlink_ports_notify()
596 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_port_get_doit() local
604 err = devlink_nl_port_fill(msg, devlink_port, DEVLINK_CMD_PORT_NEW, in devlink_nl_port_get_doit()
620 struct devlink_port *devlink_port; in devlink_nl_port_get_dump_one() local
624 xa_for_each_start(&devlink->ports, port_index, devlink_port, state->idx) { in devlink_nl_port_get_dump_one()
625 err = devlink_nl_port_fill(msg, devlink_port, in devlink_nl_port_get_dump_one()
644 static int devlink_port_type_set(struct devlink_port *devlink_port, in devlink_port_type_set() argument
650 if (!devlink_port->ops->port_type_set) in devlink_port_type_set()
653 if (port_type == devlink_port->type) in devlink_port_type_set()
656 err = devlink_port->ops->port_type_set(devlink_port, port_type); in devlink_port_type_set()
660 devlink_port->desired_type = port_type; in devlink_port_type_set()
661 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devlink_port_type_set()
665 static int devlink_port_function_hw_addr_set(struct devlink_port *port, in devlink_port_function_hw_addr_set()
693 static int devlink_port_fn_state_set(struct devlink_port *port, in devlink_port_fn_state_set()
703 static int devlink_port_function_validate(struct devlink_port *devlink_port, in devlink_port_function_validate() argument
707 const struct devlink_port_ops *ops = devlink_port->ops; in devlink_port_function_validate()
738 if (devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) { in devlink_port_function_validate()
750 if (devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) { in devlink_port_function_validate()
762 if (devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) { in devlink_port_function_validate()
778 static int devlink_port_function_set(struct devlink_port *port, in devlink_port_function_set()
832 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_port_set_doit() local
839 err = devlink_port_type_set(devlink_port, port_type); in devlink_nl_port_set_doit()
848 err = devlink_port_function_set(devlink_port, attr, extack); in devlink_nl_port_set_doit()
858 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_port_split_doit() local
864 if (!devlink_port->ops->port_split) in devlink_nl_port_split_doit()
869 if (!devlink_port->attrs.splittable) { in devlink_nl_port_split_doit()
871 if (devlink_port->attrs.split) in devlink_nl_port_split_doit()
878 if (count < 2 || !is_power_of_2(count) || count > devlink_port->attrs.lanes) { in devlink_nl_port_split_doit()
883 return devlink_port->ops->port_split(devlink, devlink_port, count, in devlink_nl_port_split_doit()
889 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_port_unsplit_doit() local
892 if (!devlink_port->ops->port_unsplit) in devlink_nl_port_unsplit_doit()
894 return devlink_port->ops->port_unsplit(devlink, devlink_port, info->extack); in devlink_nl_port_unsplit_doit()
902 struct devlink_port *devlink_port; in devlink_nl_port_new_doit() local
936 extack, &devlink_port); in devlink_nl_port_new_doit()
945 err = devlink_nl_port_fill(msg, devlink_port, DEVLINK_CMD_PORT_NEW, in devlink_nl_port_new_doit()
957 devlink_port->ops->port_del(devlink, devlink_port, NULL); in devlink_nl_port_new_doit()
963 struct devlink_port *devlink_port = info->user_ptr[1]; in devlink_nl_port_del_doit() local
967 if (!devlink_port->ops->port_del) in devlink_nl_port_del_doit()
970 return devlink_port->ops->port_del(devlink, devlink_port, extack); in devlink_nl_port_del_doit()
975 struct devlink_port *port = container_of(to_delayed_work(work), in devlink_port_type_warn()
976 struct devlink_port, in devlink_port_type_warn()
981 static bool devlink_port_type_should_warn(struct devlink_port *devlink_port) in devlink_port_type_should_warn() argument
984 return devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_CPU && in devlink_port_type_should_warn()
985 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_DSA && in devlink_port_type_should_warn()
986 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_UNUSED; in devlink_port_type_should_warn()
991 static void devlink_port_type_warn_schedule(struct devlink_port *devlink_port) in devlink_port_type_warn_schedule() argument
993 if (!devlink_port_type_should_warn(devlink_port)) in devlink_port_type_warn_schedule()
998 schedule_delayed_work(&devlink_port->type_warn_dw, in devlink_port_type_warn_schedule()
1002 static void devlink_port_type_warn_cancel(struct devlink_port *devlink_port) in devlink_port_type_warn_cancel() argument
1004 if (!devlink_port_type_should_warn(devlink_port)) in devlink_port_type_warn_cancel()
1006 cancel_delayed_work_sync(&devlink_port->type_warn_dw); in devlink_port_type_warn_cancel()
1021 struct devlink_port *devlink_port) in devlink_port_init() argument
1023 if (devlink_port->initialized) in devlink_port_init()
1025 devlink_port->devlink = devlink; in devlink_port_init()
1026 INIT_LIST_HEAD(&devlink_port->region_list); in devlink_port_init()
1027 devlink_port->initialized = true; in devlink_port_init()
1041 void devlink_port_fini(struct devlink_port *devlink_port) in devlink_port_fini() argument
1043 WARN_ON(!list_empty(&devlink_port->region_list)); in devlink_port_fini()
1064 struct devlink_port *devlink_port, in devl_port_register_with_ops() argument
1072 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devl_port_register_with_ops()
1074 devlink_port_init(devlink, devlink_port); in devl_port_register_with_ops()
1075 devlink_port->registered = true; in devl_port_register_with_ops()
1076 devlink_port->index = port_index; in devl_port_register_with_ops()
1077 devlink_port->ops = ops ? ops : &devlink_port_dummy_ops; in devl_port_register_with_ops()
1078 spin_lock_init(&devlink_port->type_lock); in devl_port_register_with_ops()
1079 INIT_LIST_HEAD(&devlink_port->reporter_list); in devl_port_register_with_ops()
1080 err = xa_insert(&devlink->ports, port_index, devlink_port, GFP_KERNEL); in devl_port_register_with_ops()
1082 devlink_port->registered = false; in devl_port_register_with_ops()
1086 INIT_DELAYED_WORK(&devlink_port->type_warn_dw, &devlink_port_type_warn); in devl_port_register_with_ops()
1087 devlink_port_type_warn_schedule(devlink_port); in devl_port_register_with_ops()
1088 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devl_port_register_with_ops()
1110 struct devlink_port *devlink_port, in devlink_port_register_with_ops() argument
1117 err = devl_port_register_with_ops(devlink, devlink_port, in devlink_port_register_with_ops()
1129 void devl_port_unregister(struct devlink_port *devlink_port) in devl_port_unregister() argument
1131 lockdep_assert_held(&devlink_port->devlink->lock); in devl_port_unregister()
1132 WARN_ON(devlink_port->type != DEVLINK_PORT_TYPE_NOTSET); in devl_port_unregister()
1134 devlink_port_type_warn_cancel(devlink_port); in devl_port_unregister()
1135 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_DEL); in devl_port_unregister()
1136 xa_erase(&devlink_port->devlink->ports, devlink_port->index); in devl_port_unregister()
1137 WARN_ON(!list_empty(&devlink_port->reporter_list)); in devl_port_unregister()
1138 devlink_port->registered = false; in devl_port_unregister()
1149 void devlink_port_unregister(struct devlink_port *devlink_port) in devlink_port_unregister() argument
1151 struct devlink *devlink = devlink_port->devlink; in devlink_port_unregister()
1154 devl_port_unregister(devlink_port); in devlink_port_unregister()
1159 static void devlink_port_type_netdev_checks(struct devlink_port *devlink_port, in devlink_port_type_netdev_checks() argument
1196 static void __devlink_port_type_set(struct devlink_port *devlink_port, in __devlink_port_type_set() argument
1202 ASSERT_DEVLINK_PORT_REGISTERED(devlink_port); in __devlink_port_type_set()
1205 devlink_port_type_warn_schedule(devlink_port); in __devlink_port_type_set()
1207 devlink_port_type_warn_cancel(devlink_port); in __devlink_port_type_set()
1209 devlink_port_type_netdev_checks(devlink_port, netdev); in __devlink_port_type_set()
1212 spin_lock_bh(&devlink_port->type_lock); in __devlink_port_type_set()
1213 devlink_port->type = type; in __devlink_port_type_set()
1216 devlink_port->type_eth.netdev = netdev; in __devlink_port_type_set()
1219 devlink_port->type_eth.ifindex = netdev->ifindex; in __devlink_port_type_set()
1220 BUILD_BUG_ON(sizeof(devlink_port->type_eth.ifname) != in __devlink_port_type_set()
1222 strcpy(devlink_port->type_eth.ifname, netdev->name); in __devlink_port_type_set()
1226 devlink_port->type_ib.ibdev = type_dev; in __devlink_port_type_set()
1231 spin_unlock_bh(&devlink_port->type_lock); in __devlink_port_type_set()
1232 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in __devlink_port_type_set()
1242 void devlink_port_type_eth_set(struct devlink_port *devlink_port) in devlink_port_type_eth_set() argument
1244 dev_warn(devlink_port->devlink->dev, in devlink_port_type_eth_set()
1246 devlink_port->index); in devlink_port_type_eth_set()
1247 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_ETH, NULL); in devlink_port_type_eth_set()
1257 void devlink_port_type_ib_set(struct devlink_port *devlink_port, in devlink_port_type_ib_set() argument
1260 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_IB, ibdev); in devlink_port_type_ib_set()
1272 void devlink_port_type_clear(struct devlink_port *devlink_port) in devlink_port_type_clear() argument
1274 if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) in devlink_port_type_clear()
1275 dev_warn(devlink_port->devlink->dev, in devlink_port_type_clear()
1277 devlink_port->index); in devlink_port_type_clear()
1278 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_NOTSET, NULL); in devlink_port_type_clear()
1286 struct devlink_port *devlink_port = netdev->devlink_port; in devlink_port_netdevice_event() local
1289 if (!devlink_port) in devlink_port_netdevice_event()
1291 devlink = devlink_port->devlink; in devlink_port_netdevice_event()
1299 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_ETH, in devlink_port_netdevice_event()
1311 __devlink_port_type_set(devlink_port, devlink_port->type, in devlink_port_netdevice_event()
1321 __devlink_port_type_set(devlink_port, devlink_port->type, in devlink_port_netdevice_event()
1328 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_NOTSET, in devlink_port_netdevice_event()
1336 static int __devlink_port_attrs_set(struct devlink_port *devlink_port, in __devlink_port_attrs_set() argument
1339 struct devlink_port_attrs *attrs = &devlink_port->attrs; in __devlink_port_attrs_set()
1341 devlink_port->attrs_set = true; in __devlink_port_attrs_set()
1344 devlink_port->switch_port = true; in __devlink_port_attrs_set()
1348 devlink_port->switch_port = false; in __devlink_port_attrs_set()
1359 void devlink_port_attrs_set(struct devlink_port *devlink_port, in devlink_port_attrs_set() argument
1364 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_set()
1366 devlink_port->attrs = *attrs; in devlink_port_attrs_set()
1367 ret = __devlink_port_attrs_set(devlink_port, attrs->flavour); in devlink_port_attrs_set()
1382 void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_pf_set() argument
1385 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_pf_set()
1388 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_pf_set()
1390 ret = __devlink_port_attrs_set(devlink_port, in devlink_port_attrs_pci_pf_set()
1409 void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_vf_set() argument
1412 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_vf_set()
1415 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_vf_set()
1417 ret = __devlink_port_attrs_set(devlink_port, in devlink_port_attrs_pci_vf_set()
1437 void devlink_port_attrs_pci_sf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_sf_set() argument
1440 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_sf_set()
1443 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_sf_set()
1445 ret = __devlink_port_attrs_set(devlink_port, in devlink_port_attrs_pci_sf_set()
1458 struct devlink_port *devlink_port; in devlink_port_rel_notify_cb() local
1460 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_rel_notify_cb()
1461 if (!devlink_port) in devlink_port_rel_notify_cb()
1463 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devlink_port_rel_notify_cb()
1469 struct devlink_port *devlink_port; in devlink_port_rel_cleanup_cb() local
1471 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_rel_cleanup_cb()
1472 if (devlink_port && devlink_port->rel_index == rel_index) in devlink_port_rel_cleanup_cb()
1473 devlink_port->rel_index = 0; in devlink_port_rel_cleanup_cb()
1482 int devl_port_fn_devlink_set(struct devlink_port *devlink_port, in devl_port_fn_devlink_set() argument
1485 ASSERT_DEVLINK_PORT_REGISTERED(devlink_port); in devl_port_fn_devlink_set()
1487 if (WARN_ON(devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_SF || in devl_port_fn_devlink_set()
1488 devlink_port->attrs.pci_sf.external)) in devl_port_fn_devlink_set()
1491 return devlink_rel_nested_in_add(&devlink_port->rel_index, in devl_port_fn_devlink_set()
1492 devlink_port->devlink->index, in devl_port_fn_devlink_set()
1493 devlink_port->index, in devl_port_fn_devlink_set()
1506 void devlink_port_linecard_set(struct devlink_port *devlink_port, in devlink_port_linecard_set() argument
1509 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_linecard_set()
1511 devlink_port->linecard = linecard; in devlink_port_linecard_set()
1515 static int __devlink_port_phys_port_name_get(struct devlink_port *devlink_port, in __devlink_port_phys_port_name_get() argument
1518 struct devlink_port_attrs *attrs = &devlink_port->attrs; in __devlink_port_phys_port_name_get()
1521 if (!devlink_port->attrs_set) in __devlink_port_phys_port_name_get()
1526 if (devlink_port->linecard) in __devlink_port_phys_port_name_get()
1528 devlink_linecard_index(devlink_port->linecard)); in __devlink_port_phys_port_name_get()
1589 struct devlink_port *devlink_port; in devlink_compat_phys_port_name_get() local
1597 devlink_port = dev->devlink_port; in devlink_compat_phys_port_name_get()
1598 if (!devlink_port) in devlink_compat_phys_port_name_get()
1601 return __devlink_port_phys_port_name_get(devlink_port, name, len); in devlink_compat_phys_port_name_get()
1607 struct devlink_port *devlink_port; in devlink_compat_switch_id_get() local
1613 devlink_port = dev->devlink_port; in devlink_compat_switch_id_get()
1614 if (!devlink_port || !devlink_port->switch_port) in devlink_compat_switch_id_get()
1617 memcpy(ppid, &devlink_port->attrs.switch_id, sizeof(*ppid)); in devlink_compat_switch_id_get()