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()
230 struct devlink_port *devlink_port) in devlink_nl_port_attrs_put() argument
232 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_nl_port_attrs_put()
234 if (!devlink_port->attrs_set) in devlink_nl_port_attrs_put()
244 switch (devlink_port->attrs.flavour) { in devlink_nl_port_attrs_put()
294 static int devlink_port_fn_hw_addr_fill(struct devlink_port *port, in devlink_port_fn_hw_addr_fill()
334 static int devlink_port_fn_state_fill(struct devlink_port *port, in devlink_port_fn_state_fill()
370 devlink_port_fn_mig_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_mig_set() argument
373 return devlink_port->ops->port_fn_migratable_set(devlink_port, enable, in devlink_port_fn_mig_set()
378 devlink_port_fn_roce_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_roce_set() argument
381 return devlink_port->ops->port_fn_roce_set(devlink_port, enable, in devlink_port_fn_roce_set()
386 devlink_port_fn_ipsec_crypto_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_ipsec_crypto_set() argument
389 return devlink_port->ops->port_fn_ipsec_crypto_set(devlink_port, enable, extack); in devlink_port_fn_ipsec_crypto_set()
393 devlink_port_fn_ipsec_packet_set(struct devlink_port *devlink_port, bool enable, in devlink_port_fn_ipsec_packet_set() argument
396 return devlink_port->ops->port_fn_ipsec_packet_set(devlink_port, enable, extack); in devlink_port_fn_ipsec_packet_set()
399 static int devlink_port_fn_caps_set(struct devlink_port *devlink_port, in devlink_port_fn_caps_set() argument
410 err = devlink_port_fn_roce_set(devlink_port, in devlink_port_fn_caps_set()
417 err = devlink_port_fn_mig_set(devlink_port, caps_value & in devlink_port_fn_caps_set()
424 err = devlink_port_fn_ipsec_crypto_set(devlink_port, caps_value & in devlink_port_fn_caps_set()
431 err = devlink_port_fn_ipsec_packet_set(devlink_port, caps_value & in devlink_port_fn_caps_set()
441 devlink_port_fn_max_io_eqs_set(struct devlink_port *devlink_port, in devlink_port_fn_max_io_eqs_set() argument
448 return devlink_port->ops->port_fn_max_io_eqs_set(devlink_port, in devlink_port_fn_max_io_eqs_set()
453 devlink_nl_port_function_attrs_put(struct sk_buff *msg, struct devlink_port *port, in devlink_nl_port_function_attrs_put()
490 struct devlink_port *devlink_port, in devlink_nl_port_fill() argument
494 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_fill()
503 if (nla_put_u32(msg, DEVLINK_ATTR_PORT_INDEX, devlink_port->index)) in devlink_nl_port_fill()
506 spin_lock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
507 if (nla_put_u16(msg, DEVLINK_ATTR_PORT_TYPE, devlink_port->type)) in devlink_nl_port_fill()
509 if (devlink_port->desired_type != DEVLINK_PORT_TYPE_NOTSET && in devlink_nl_port_fill()
511 devlink_port->desired_type)) in devlink_nl_port_fill()
513 if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) { in devlink_nl_port_fill()
514 if (devlink_port->type_eth.netdev && in devlink_nl_port_fill()
516 devlink_port->type_eth.ifindex) || in devlink_nl_port_fill()
518 devlink_port->type_eth.ifname))) in devlink_nl_port_fill()
521 if (devlink_port->type == DEVLINK_PORT_TYPE_IB) { in devlink_nl_port_fill()
522 struct ib_device *ibdev = devlink_port->type_ib.ibdev; in devlink_nl_port_fill()
529 spin_unlock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
530 if (devlink_nl_port_attrs_put(msg, devlink_port)) in devlink_nl_port_fill()
532 if (devlink_nl_port_function_attrs_put(msg, devlink_port, extack)) in devlink_nl_port_fill()
534 if (devlink_port->linecard && in devlink_nl_port_fill()
536 devlink_linecard_index(devlink_port->linecard))) in devlink_nl_port_fill()
543 spin_unlock_bh(&devlink_port->type_lock); in devlink_nl_port_fill()
549 static void devlink_port_notify(struct devlink_port *devlink_port, in devlink_port_notify() argument
552 struct devlink *devlink = devlink_port->devlink; in devlink_port_notify()
566 err = devlink_nl_port_fill(msg, devlink_port, cmd, 0, 0, 0, NULL); in devlink_port_notify()
573 devlink_nl_obj_desc_port_set(&desc, devlink_port); in devlink_port_notify()
580 struct devlink_port *devlink_port; in devlink_ports_notify() local
583 xa_for_each(&devlink->ports, port_index, devlink_port) in devlink_ports_notify()
584 devlink_port_notify(devlink_port, cmd); in devlink_ports_notify()
599 struct devlink_port *devlink_port = devlink_nl_ctx(info)->devlink_port; in devlink_nl_port_get_doit() local
607 err = devlink_nl_port_fill(msg, devlink_port, DEVLINK_CMD_PORT_NEW, in devlink_nl_port_get_doit()
623 struct devlink_port *devlink_port; in devlink_nl_port_get_dump_one() local
627 xa_for_each_start(&devlink->ports, port_index, devlink_port, state->idx) { in devlink_nl_port_get_dump_one()
628 err = devlink_nl_port_fill(msg, devlink_port, in devlink_nl_port_get_dump_one()
647 static int devlink_port_type_set(struct devlink_port *devlink_port, in devlink_port_type_set() argument
653 if (!devlink_port->ops->port_type_set) in devlink_port_type_set()
656 if (port_type == devlink_port->type) in devlink_port_type_set()
659 err = devlink_port->ops->port_type_set(devlink_port, port_type); in devlink_port_type_set()
663 devlink_port->desired_type = port_type; in devlink_port_type_set()
664 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devlink_port_type_set()
668 static int devlink_port_function_hw_addr_set(struct devlink_port *port, in devlink_port_function_hw_addr_set()
696 static int devlink_port_fn_state_set(struct devlink_port *port, in devlink_port_fn_state_set()
706 static int devlink_port_function_validate(struct devlink_port *devlink_port, in devlink_port_function_validate() argument
710 const struct devlink_port_ops *ops = devlink_port->ops; in devlink_port_function_validate()
741 if (devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) { in devlink_port_function_validate()
753 if (devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) { in devlink_port_function_validate()
765 if (devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_VF) { in devlink_port_function_validate()
781 static int devlink_port_function_set(struct devlink_port *port, in devlink_port_function_set()
835 struct devlink_port *devlink_port = devlink_nl_ctx(info)->devlink_port; in devlink_nl_port_set_doit() local
842 err = devlink_port_type_set(devlink_port, port_type); in devlink_nl_port_set_doit()
851 err = devlink_port_function_set(devlink_port, attr, extack); in devlink_nl_port_set_doit()
861 struct devlink_port *devlink_port = devlink_nl_ctx(info)->devlink_port; in devlink_nl_port_split_doit() local
867 if (!devlink_port->ops->port_split) in devlink_nl_port_split_doit()
872 if (!devlink_port->attrs.splittable) { in devlink_nl_port_split_doit()
874 if (devlink_port->attrs.split) in devlink_nl_port_split_doit()
881 if (count < 2 || !is_power_of_2(count) || count > devlink_port->attrs.lanes) { in devlink_nl_port_split_doit()
886 return devlink_port->ops->port_split(devlink, devlink_port, count, in devlink_nl_port_split_doit()
892 struct devlink_port *devlink_port = devlink_nl_ctx(info)->devlink_port; in devlink_nl_port_unsplit_doit() local
895 if (!devlink_port->ops->port_unsplit) in devlink_nl_port_unsplit_doit()
897 return devlink_port->ops->port_unsplit(devlink, devlink_port, info->extack); in devlink_nl_port_unsplit_doit()
905 struct devlink_port *devlink_port; in devlink_nl_port_new_doit() local
939 extack, &devlink_port); in devlink_nl_port_new_doit()
948 err = devlink_nl_port_fill(msg, devlink_port, DEVLINK_CMD_PORT_NEW, in devlink_nl_port_new_doit()
960 devlink_port->ops->port_del(devlink, devlink_port, NULL); in devlink_nl_port_new_doit()
966 struct devlink_port *devlink_port = devlink_nl_ctx(info)->devlink_port; in devlink_nl_port_del_doit() local
970 if (!devlink_port->ops->port_del) in devlink_nl_port_del_doit()
973 return devlink_port->ops->port_del(devlink, devlink_port, extack); in devlink_nl_port_del_doit()
978 struct devlink_port *port = container_of(to_delayed_work(work), in devlink_port_type_warn()
979 struct devlink_port, in devlink_port_type_warn()
984 static bool devlink_port_type_should_warn(struct devlink_port *devlink_port) in devlink_port_type_should_warn() argument
987 return devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_CPU && in devlink_port_type_should_warn()
988 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_DSA && in devlink_port_type_should_warn()
989 devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_UNUSED; in devlink_port_type_should_warn()
994 static void devlink_port_type_warn_schedule(struct devlink_port *devlink_port) in devlink_port_type_warn_schedule() argument
996 if (!devlink_port_type_should_warn(devlink_port)) in devlink_port_type_warn_schedule()
1001 schedule_delayed_work(&devlink_port->type_warn_dw, in devlink_port_type_warn_schedule()
1005 static void devlink_port_type_warn_cancel(struct devlink_port *devlink_port) in devlink_port_type_warn_cancel() argument
1007 if (!devlink_port_type_should_warn(devlink_port)) in devlink_port_type_warn_cancel()
1009 cancel_delayed_work_sync(&devlink_port->type_warn_dw); in devlink_port_type_warn_cancel()
1024 struct devlink_port *devlink_port) in devlink_port_init() argument
1026 if (devlink_port->initialized) in devlink_port_init()
1028 devlink_port->devlink = devlink; in devlink_port_init()
1029 INIT_LIST_HEAD(&devlink_port->region_list); in devlink_port_init()
1030 INIT_LIST_HEAD(&devlink_port->resource_list); in devlink_port_init()
1031 devlink_port->initialized = true; in devlink_port_init()
1045 void devlink_port_fini(struct devlink_port *devlink_port) in devlink_port_fini() argument
1047 WARN_ON(!list_empty(&devlink_port->region_list)); in devlink_port_fini()
1048 WARN_ON(!list_empty(&devlink_port->resource_list)); in devlink_port_fini()
1069 struct devlink_port *devlink_port, in devl_port_register_with_ops() argument
1077 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devl_port_register_with_ops()
1079 devlink_port_init(devlink, devlink_port); in devl_port_register_with_ops()
1080 devlink_port->registered = true; in devl_port_register_with_ops()
1081 devlink_port->index = port_index; in devl_port_register_with_ops()
1082 devlink_port->ops = ops ? ops : &devlink_port_dummy_ops; in devl_port_register_with_ops()
1083 spin_lock_init(&devlink_port->type_lock); in devl_port_register_with_ops()
1084 INIT_LIST_HEAD(&devlink_port->reporter_list); in devl_port_register_with_ops()
1085 err = xa_insert(&devlink->ports, port_index, devlink_port, GFP_KERNEL); in devl_port_register_with_ops()
1087 devlink_port->registered = false; in devl_port_register_with_ops()
1091 INIT_DELAYED_WORK(&devlink_port->type_warn_dw, &devlink_port_type_warn); in devl_port_register_with_ops()
1092 devlink_port_type_warn_schedule(devlink_port); in devl_port_register_with_ops()
1093 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devl_port_register_with_ops()
1115 struct devlink_port *devlink_port, in devlink_port_register_with_ops() argument
1122 err = devl_port_register_with_ops(devlink, devlink_port, in devlink_port_register_with_ops()
1134 void devl_port_unregister(struct devlink_port *devlink_port) in devl_port_unregister() argument
1136 lockdep_assert_held(&devlink_port->devlink->lock); in devl_port_unregister()
1137 WARN_ON(devlink_port->type != DEVLINK_PORT_TYPE_NOTSET); in devl_port_unregister()
1139 devlink_port_type_warn_cancel(devlink_port); in devl_port_unregister()
1140 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_DEL); in devl_port_unregister()
1141 xa_erase(&devlink_port->devlink->ports, devlink_port->index); in devl_port_unregister()
1142 WARN_ON(!list_empty(&devlink_port->reporter_list)); in devl_port_unregister()
1143 devlink_port->registered = false; in devl_port_unregister()
1154 void devlink_port_unregister(struct devlink_port *devlink_port) in devlink_port_unregister() argument
1156 struct devlink *devlink = devlink_port->devlink; in devlink_port_unregister()
1159 devl_port_unregister(devlink_port); in devlink_port_unregister()
1164 static void devlink_port_type_netdev_checks(struct devlink_port *devlink_port, in devlink_port_type_netdev_checks() argument
1201 static void __devlink_port_type_set(struct devlink_port *devlink_port, in __devlink_port_type_set() argument
1207 ASSERT_DEVLINK_PORT_REGISTERED(devlink_port); in __devlink_port_type_set()
1210 devlink_port_type_warn_schedule(devlink_port); in __devlink_port_type_set()
1212 devlink_port_type_warn_cancel(devlink_port); in __devlink_port_type_set()
1214 devlink_port_type_netdev_checks(devlink_port, netdev); in __devlink_port_type_set()
1217 spin_lock_bh(&devlink_port->type_lock); in __devlink_port_type_set()
1218 devlink_port->type = type; in __devlink_port_type_set()
1221 devlink_port->type_eth.netdev = netdev; in __devlink_port_type_set()
1224 devlink_port->type_eth.ifindex = netdev->ifindex; in __devlink_port_type_set()
1225 BUILD_BUG_ON(sizeof(devlink_port->type_eth.ifname) != in __devlink_port_type_set()
1227 strcpy(devlink_port->type_eth.ifname, netdev->name); in __devlink_port_type_set()
1231 devlink_port->type_ib.ibdev = type_dev; in __devlink_port_type_set()
1236 spin_unlock_bh(&devlink_port->type_lock); in __devlink_port_type_set()
1237 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in __devlink_port_type_set()
1247 void devlink_port_type_eth_set(struct devlink_port *devlink_port) in devlink_port_type_eth_set() argument
1249 devl_warn(devlink_port->devlink, in devlink_port_type_eth_set()
1251 devlink_port->index); in devlink_port_type_eth_set()
1252 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_ETH, NULL); in devlink_port_type_eth_set()
1262 void devlink_port_type_ib_set(struct devlink_port *devlink_port, in devlink_port_type_ib_set() argument
1265 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_IB, ibdev); in devlink_port_type_ib_set()
1277 void devlink_port_type_clear(struct devlink_port *devlink_port) in devlink_port_type_clear() argument
1279 if (devlink_port->type == DEVLINK_PORT_TYPE_ETH) in devlink_port_type_clear()
1280 devl_warn(devlink_port->devlink, in devlink_port_type_clear()
1282 devlink_port->index); in devlink_port_type_clear()
1283 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_NOTSET, NULL); in devlink_port_type_clear()
1291 struct devlink_port *devlink_port = netdev->devlink_port; in devlink_port_netdevice_event() local
1294 if (!devlink_port) in devlink_port_netdevice_event()
1296 devlink = devlink_port->devlink; in devlink_port_netdevice_event()
1304 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_ETH, in devlink_port_netdevice_event()
1316 __devlink_port_type_set(devlink_port, devlink_port->type, in devlink_port_netdevice_event()
1326 __devlink_port_type_set(devlink_port, devlink_port->type, in devlink_port_netdevice_event()
1333 __devlink_port_type_set(devlink_port, DEVLINK_PORT_TYPE_NOTSET, in devlink_port_netdevice_event()
1341 static void __devlink_port_attrs_set(struct devlink_port *devlink_port, in __devlink_port_attrs_set() argument
1344 struct devlink_port_attrs *attrs = &devlink_port->attrs; in __devlink_port_attrs_set()
1346 devlink_port->attrs_set = true; in __devlink_port_attrs_set()
1349 devlink_port->switch_port = true; in __devlink_port_attrs_set()
1353 devlink_port->switch_port = false; in __devlink_port_attrs_set()
1363 void devlink_port_attrs_set(struct devlink_port *devlink_port, in devlink_port_attrs_set() argument
1366 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_set()
1369 devlink_port->attrs = *attrs; in devlink_port_attrs_set()
1370 __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()
1387 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_pf_set()
1389 __devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PCI_PF); in devlink_port_attrs_pci_pf_set()
1406 void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_vf_set() argument
1409 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_vf_set()
1411 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_vf_set()
1413 __devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PCI_VF); in devlink_port_attrs_pci_vf_set()
1430 void devlink_port_attrs_pci_sf_set(struct devlink_port *devlink_port, u32 controller, in devlink_port_attrs_pci_sf_set() argument
1433 struct devlink_port_attrs *attrs = &devlink_port->attrs; in devlink_port_attrs_pci_sf_set()
1435 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_attrs_pci_sf_set()
1437 __devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PCI_SF); in devlink_port_attrs_pci_sf_set()
1447 struct devlink_port *devlink_port; in devlink_port_rel_notify_cb() local
1449 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_rel_notify_cb()
1450 if (!devlink_port) in devlink_port_rel_notify_cb()
1452 devlink_port_notify(devlink_port, DEVLINK_CMD_PORT_NEW); in devlink_port_rel_notify_cb()
1458 struct devlink_port *devlink_port; in devlink_port_rel_cleanup_cb() local
1460 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_rel_cleanup_cb()
1461 if (devlink_port && devlink_port->rel_index == rel_index) in devlink_port_rel_cleanup_cb()
1462 devlink_port->rel_index = 0; in devlink_port_rel_cleanup_cb()
1471 int devl_port_fn_devlink_set(struct devlink_port *devlink_port, in devl_port_fn_devlink_set() argument
1474 ASSERT_DEVLINK_PORT_REGISTERED(devlink_port); in devl_port_fn_devlink_set()
1476 if (WARN_ON(devlink_port->attrs.flavour != DEVLINK_PORT_FLAVOUR_PCI_SF || in devl_port_fn_devlink_set()
1477 devlink_port->attrs.pci_sf.external)) in devl_port_fn_devlink_set()
1480 return devlink_rel_nested_in_add(&devlink_port->rel_index, in devl_port_fn_devlink_set()
1481 devlink_port->devlink->index, in devl_port_fn_devlink_set()
1482 devlink_port->index, in devl_port_fn_devlink_set()
1495 void devlink_port_linecard_set(struct devlink_port *devlink_port, in devlink_port_linecard_set() argument
1498 ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); in devlink_port_linecard_set()
1500 devlink_port->linecard = linecard; in devlink_port_linecard_set()
1504 static int __devlink_port_phys_port_name_get(struct devlink_port *devlink_port, in __devlink_port_phys_port_name_get() argument
1507 struct devlink_port_attrs *attrs = &devlink_port->attrs; in __devlink_port_phys_port_name_get()
1510 if (!devlink_port->attrs_set || devlink_port->attrs.no_phys_port_name) in __devlink_port_phys_port_name_get()
1515 if (devlink_port->linecard) in __devlink_port_phys_port_name_get()
1517 devlink_linecard_index(devlink_port->linecard)); in __devlink_port_phys_port_name_get()
1578 struct devlink_port *devlink_port; in devlink_compat_phys_port_name_get() local
1586 devlink_port = dev->devlink_port; in devlink_compat_phys_port_name_get()
1587 if (!devlink_port) in devlink_compat_phys_port_name_get()
1590 return __devlink_port_phys_port_name_get(devlink_port, name, len); in devlink_compat_phys_port_name_get()
1596 struct devlink_port *devlink_port; in devlink_compat_switch_id_get() local
1602 devlink_port = dev->devlink_port; in devlink_compat_switch_id_get()
1603 if (!devlink_port || !devlink_port->switch_port) in devlink_compat_switch_id_get()
1606 memcpy(ppid, &devlink_port->attrs.switch_id, sizeof(*ppid)); in devlink_compat_switch_id_get()