Lines Matching full:devlink
14 struct devlink_port *devlink_port_get_by_index(struct devlink *devlink,
17 return xa_load(&devlink->ports, port_index);
20 struct devlink_port *devlink_port_get_from_attrs(struct devlink *devlink,
27 devlink_port = devlink_port_get_by_index(devlink, port_index);
35 struct devlink_port *devlink_port_get_from_info(struct devlink *devlink,
38 return devlink_port_get_from_attrs(devlink, info->attrs);
199 if (devlink_nl_put_handle(msg, devlink_port->devlink))
208 struct devlink *devlink = devlink_port->devlink;
210 return nla_total_size(strlen(devlink_bus_name(devlink)) + 1) /* DEVLINK_ATTR_BUS_NAME */
211 + nla_total_size(strlen(devlink_dev_name(devlink)) + 1) /* DEVLINK_ATTR_DEV_NAME */
463 err = devlink_rel_devlink_handle_put(msg, port->devlink,
481 struct devlink *devlink = devlink_port->devlink;
488 if (devlink_nl_put_handle(msg, devlink))
539 struct devlink *devlink = devlink_port->devlink;
546 if (!__devl_is_registered(devlink) || !devlink_nl_notify_need(devlink))
559 devlink_nl_obj_desc_init(&desc, devlink);
561 devlink_nl_notify_send_desc(devlink, msg, &desc);
564 static void devlink_ports_notify(struct devlink *devlink,
570 xa_for_each(&devlink->ports, port_index, devlink_port)
574 void devlink_ports_notify_register(struct devlink *devlink)
576 devlink_ports_notify(devlink, DEVLINK_CMD_PORT_NEW);
579 void devlink_ports_notify_unregister(struct devlink *devlink)
581 devlink_ports_notify(devlink, DEVLINK_CMD_PORT_DEL);
606 devlink_nl_port_get_dump_one(struct sk_buff *msg, struct devlink *devlink,
614 xa_for_each_start(&devlink->ports, port_index, devlink_port, state->idx) {
849 struct devlink *devlink = devlink_nl_ctx(info)->devlink;
873 return devlink_port->ops->port_split(devlink, devlink_port, count,
880 struct devlink *devlink = devlink_nl_ctx(info)->devlink;
884 return devlink_port->ops->port_unsplit(devlink, devlink_port, info->extack);
891 struct devlink *devlink = devlink_nl_ctx(info)->devlink;
896 if (!devlink->ops->port_new)
925 err = devlink->ops->port_new(devlink, &new_attrs,
947 devlink_port->ops->port_del(devlink, devlink_port, NULL);
955 struct devlink *devlink = devlink_nl_ctx(info)->devlink;
960 return devlink_port->ops->port_del(devlink, devlink_port, extack);
968 devl_warn(port->devlink, "Type was not set for devlink port.");
1000 * devlink_port_init() - Init devlink port
1002 * @devlink: devlink
1003 * @devlink_port: devlink port
1006 * that may be called before devlink port registration.
1010 void devlink_port_init(struct devlink *devlink,
1015 devlink_port->devlink = devlink;
1023 * devlink_port_fini() - Deinitialize devlink port
1025 * @devlink_port: devlink port
1028 * that may be called after devlink port unregistration.
1042 * devl_port_register_with_ops() - Register devlink port
1044 * @devlink: devlink
1045 * @devlink_port: devlink port
1049 * Register devlink port with provided port index. User can use
1055 int devl_port_register_with_ops(struct devlink *devlink,
1062 devl_assert_locked(devlink);
1066 devlink_port_init(devlink, devlink_port);
1072 err = xa_insert(&devlink->ports, port_index, devlink_port, GFP_KERNEL);
1086 * devlink_port_register_with_ops - Register devlink port
1088 * @devlink: devlink
1089 * @devlink_port: devlink port
1093 * Register devlink port with provided port index. User can use
1099 * Context: Takes and release devlink->lock <mutex>.
1101 int devlink_port_register_with_ops(struct devlink *devlink,
1108 devl_lock(devlink);
1109 err = devl_port_register_with_ops(devlink, devlink_port,
1111 devl_unlock(devlink);
1117 * devl_port_unregister() - Unregister devlink port
1119 * @devlink_port: devlink port
1123 lockdep_assert_held(&devlink_port->devlink->lock);
1128 xa_erase(&devlink_port->devlink->ports, devlink_port->index);
1135 * devlink_port_unregister - Unregister devlink port
1137 * @devlink_port: devlink port
1139 * Context: Takes and release devlink->lock <mutex>.
1143 struct devlink *devlink = devlink_port->devlink;
1145 devl_lock(devlink);
1147 devl_unlock(devlink);
1156 /* If driver registers devlink port, it should set devlink port
1230 * @devlink_port: devlink port
1236 devl_warn(devlink_port->devlink,
1237 "devlink port type for port %d set to Ethernet without a software interface reference, device type not supported by the kernel?\n",
1246 * @devlink_port: devlink port
1259 * @devlink_port: devlink port
1267 devl_warn(devlink_port->devlink,
1268 "devlink port type for port %d cleared without a software interface reference, device type not supported by the kernel?\n",
1279 struct devlink *devlink;
1283 devlink = devlink_port->devlink;
1296 if (devlink_net(devlink) != dev_net(netdev))
1307 if (devlink_net(devlink) != dev_net(netdev))
1347 * @devlink_port: devlink port
1348 * @attrs: devlink port attrs
1364 * @devlink_port: devlink port
1365 * @controller: associated controller number for the devlink port instance
1366 * @pf: associated PCI function number for the devlink port instance
1386 * @devlink_port: devlink port
1387 * @controller: associated controller number for the devlink port instance
1388 * @pf: associated PCI function number for the devlink port instance
1389 * @vf: associated PCI VF number of a PF for the devlink port instance;
1411 * @devlink_port: devlink port
1412 * @controller: associated controller number for the devlink port instance
1413 * @pf: associated PCI function number for the devlink port instance
1414 * @sf: associated SF number of a PF for the devlink port instance
1432 static void devlink_port_rel_notify_cb(struct devlink *devlink, u32 port_index)
1436 devlink_port = devlink_port_get_by_index(devlink, port_index);
1442 static void devlink_port_rel_cleanup_cb(struct devlink *devlink, u32 port_index,
1447 devlink_port = devlink_port_get_by_index(devlink, port_index);
1453 * devl_port_fn_devlink_set - Attach peer devlink
1455 * @devlink_port: devlink port
1456 * @fn_devlink: devlink instance to attach
1459 struct devlink *fn_devlink)
1468 devlink_port->devlink->index,
1479 * @devlink_port: devlink port
1480 * @linecard: devlink linecard
1569 * any devlink lock as only permanent values are accessed.
1587 * any devlink lock as only permanent values are accessed.