Lines Matching full:devlink
27 struct devlink_port *devlink_port_get_by_index(struct devlink *devlink, in devlink_port_get_by_index() argument
30 return xa_load(&devlink->ports, port_index); in devlink_port_get_by_index()
33 struct devlink_port *devlink_port_get_from_attrs(struct devlink *devlink, in devlink_port_get_from_attrs() argument
40 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_get_from_attrs()
48 struct devlink_port *devlink_port_get_from_info(struct devlink *devlink, in devlink_port_get_from_info() argument
51 return devlink_port_get_from_attrs(devlink, info->attrs); in devlink_port_get_from_info()
212 if (devlink_nl_put_handle(msg, devlink_port->devlink)) in devlink_nl_port_handle_fill()
221 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_handle_size() local
223 return nla_total_size(strlen(devlink_bus_name(devlink)) + 1) /* DEVLINK_ATTR_BUS_NAME */ in devlink_nl_port_handle_size()
224 + nla_total_size(strlen(devlink_dev_name(devlink)) + 1) /* DEVLINK_ATTR_DEV_NAME */ in devlink_nl_port_handle_size()
476 err = devlink_rel_devlink_handle_put(msg, port->devlink, in devlink_nl_port_function_attrs_put()
494 struct devlink *devlink = devlink_port->devlink; in devlink_nl_port_fill() local
501 if (devlink_nl_put_handle(msg, devlink)) in devlink_nl_port_fill()
552 struct devlink *devlink = devlink_port->devlink; in devlink_port_notify() local
559 if (!__devl_is_registered(devlink) || !devlink_nl_notify_need(devlink)) in devlink_port_notify()
572 devlink_nl_obj_desc_init(&desc, devlink); in devlink_port_notify()
574 devlink_nl_notify_send_desc(devlink, msg, &desc); in devlink_port_notify()
577 static void devlink_ports_notify(struct devlink *devlink, in devlink_ports_notify() argument
583 xa_for_each(&devlink->ports, port_index, devlink_port) in devlink_ports_notify()
587 void devlink_ports_notify_register(struct devlink *devlink) in devlink_ports_notify_register() argument
589 devlink_ports_notify(devlink, DEVLINK_CMD_PORT_NEW); in devlink_ports_notify_register()
592 void devlink_ports_notify_unregister(struct devlink *devlink) in devlink_ports_notify_unregister() argument
594 devlink_ports_notify(devlink, DEVLINK_CMD_PORT_DEL); in devlink_ports_notify_unregister()
619 devlink_nl_port_get_dump_one(struct sk_buff *msg, struct devlink *devlink, in devlink_nl_port_get_dump_one() argument
627 xa_for_each_start(&devlink->ports, port_index, devlink_port, state->idx) { in devlink_nl_port_get_dump_one()
862 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_port_split_doit() local
886 return devlink_port->ops->port_split(devlink, devlink_port, count, in devlink_nl_port_split_doit()
893 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_port_unsplit_doit() local
897 return devlink_port->ops->port_unsplit(devlink, devlink_port, info->extack); in devlink_nl_port_unsplit_doit()
904 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_port_new_doit() local
909 if (!devlink->ops->port_new) in devlink_nl_port_new_doit()
938 err = devlink->ops->port_new(devlink, &new_attrs, in devlink_nl_port_new_doit()
960 devlink_port->ops->port_del(devlink, devlink_port, NULL); in devlink_nl_port_new_doit()
968 struct devlink *devlink = devlink_nl_ctx(info)->devlink; in devlink_nl_port_del_doit() local
973 return devlink_port->ops->port_del(devlink, devlink_port, extack); in devlink_nl_port_del_doit()
981 devl_warn(port->devlink, "Type was not set for devlink port."); in devlink_port_type_warn()
1013 * devlink_port_init() - Init devlink port
1015 * @devlink: devlink
1016 * @devlink_port: devlink port
1019 * that may be called before devlink port registration.
1023 void devlink_port_init(struct devlink *devlink, in devlink_port_init() argument
1028 devlink_port->devlink = devlink; in devlink_port_init()
1036 * devlink_port_fini() - Deinitialize devlink port
1038 * @devlink_port: devlink port
1041 * that may be called after devlink port unregistration.
1055 * devl_port_register_with_ops() - Register devlink port
1057 * @devlink: devlink
1058 * @devlink_port: devlink port
1062 * Register devlink port with provided port index. User can use
1068 int devl_port_register_with_ops(struct devlink *devlink, in devl_port_register_with_ops() argument
1075 devl_assert_locked(devlink); in devl_port_register_with_ops()
1079 devlink_port_init(devlink, devlink_port); in devl_port_register_with_ops()
1085 err = xa_insert(&devlink->ports, port_index, devlink_port, GFP_KERNEL); in devl_port_register_with_ops()
1099 * devlink_port_register_with_ops - Register devlink port
1101 * @devlink: devlink
1102 * @devlink_port: devlink port
1106 * Register devlink port with provided port index. User can use
1112 * Context: Takes and release devlink->lock <mutex>.
1114 int devlink_port_register_with_ops(struct devlink *devlink, in devlink_port_register_with_ops() argument
1121 devl_lock(devlink); in devlink_port_register_with_ops()
1122 err = devl_port_register_with_ops(devlink, devlink_port, in devlink_port_register_with_ops()
1124 devl_unlock(devlink); in devlink_port_register_with_ops()
1130 * devl_port_unregister() - Unregister devlink port
1132 * @devlink_port: devlink port
1136 lockdep_assert_held(&devlink_port->devlink->lock); in devl_port_unregister()
1141 xa_erase(&devlink_port->devlink->ports, devlink_port->index); in devl_port_unregister()
1148 * devlink_port_unregister - Unregister devlink port
1150 * @devlink_port: devlink port
1152 * Context: Takes and release devlink->lock <mutex>.
1156 struct devlink *devlink = devlink_port->devlink; in devlink_port_unregister() local
1158 devl_lock(devlink); in devlink_port_unregister()
1160 devl_unlock(devlink); in devlink_port_unregister()
1169 /* If driver registers devlink port, it should set devlink port in devlink_port_type_netdev_checks()
1243 * @devlink_port: devlink port
1249 devl_warn(devlink_port->devlink, in devlink_port_type_eth_set()
1250 …"devlink port type for port %d set to Ethernet without a software interface reference, device type… in devlink_port_type_eth_set()
1259 * @devlink_port: devlink port
1272 * @devlink_port: devlink port
1280 devl_warn(devlink_port->devlink, in devlink_port_type_clear()
1281 …"devlink port type for port %d cleared without a software interface reference, device type not sup… in devlink_port_type_clear()
1292 struct devlink *devlink; in devlink_port_netdevice_event() local
1296 devlink = devlink_port->devlink; in devlink_port_netdevice_event()
1309 if (devlink_net(devlink) != dev_net(netdev)) in devlink_port_netdevice_event()
1320 if (devlink_net(devlink) != dev_net(netdev)) in devlink_port_netdevice_event()
1360 * @devlink_port: devlink port
1361 * @attrs: devlink port attrs
1377 * @devlink_port: devlink port
1378 * @controller: associated controller number for the devlink port instance
1379 * @pf: associated PCI function number for the devlink port instance
1399 * @devlink_port: devlink port
1400 * @controller: associated controller number for the devlink port instance
1401 * @pf: associated PCI function number for the devlink port instance
1402 * @vf: associated PCI VF number of a PF for the devlink port instance;
1424 * @devlink_port: devlink port
1425 * @controller: associated controller number for the devlink port instance
1426 * @pf: associated PCI function number for the devlink port instance
1427 * @sf: associated SF number of a PF for the devlink port instance
1445 static void devlink_port_rel_notify_cb(struct devlink *devlink, u32 port_index) in devlink_port_rel_notify_cb() argument
1449 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_rel_notify_cb()
1455 static void devlink_port_rel_cleanup_cb(struct devlink *devlink, u32 port_index, in devlink_port_rel_cleanup_cb() argument
1460 devlink_port = devlink_port_get_by_index(devlink, port_index); in devlink_port_rel_cleanup_cb()
1466 * devl_port_fn_devlink_set - Attach peer devlink
1468 * @devlink_port: devlink port
1469 * @fn_devlink: devlink instance to attach
1472 struct devlink *fn_devlink) in devl_port_fn_devlink_set()
1481 devlink_port->devlink->index, in devl_port_fn_devlink_set()
1492 * @devlink_port: devlink port
1493 * @linecard: devlink linecard
1582 * any devlink lock as only permanent values are accessed. in devlink_compat_phys_port_name_get()
1600 * any devlink lock as only permanent values are accessed. in devlink_compat_switch_id_get()