mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-26 08:51:08 +00:00
8ec2d6a36b
3 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Josef Söntgen
|
d4e4b8bf60 |
driver/wifi: rework CTRL interface manager
This commit streamlines the interaction between the Wifi::Manager and the wpa_supplicant's CTRL interface. As user-facing changes it alters some default settings and introduces new features: * Every configured network now needs to explicitly have its 'auto_connect' (to be considered an option for joining) attribute set to 'true' whereas this was previously the default value if the attribute was not set at all. * The 'log_level' attribute is added and configures the supplicant's verbosity. Valid values correspond to levels used by the supplicant and are as follows 'excessive', 'msgdump', 'debug', 'info', 'warning' and 'error'. The default value is 'error' and configures the least amount of verbosity. * The 'bgscan' attribute may be used to configure the way the supplicant performs background-scanning to steer or rather optimize roaming decision within the same network. The default value is set to 'simple:30:-70:600'. It can be disabled by specifying an empty value, e.g. 'bgscan=""'. * The 'verbose_state' attribute was removed alltogether and similar functionality is now coverted by 'verbose' attribute. Implementation-wise the internals changed significantly and are outlined in the following paragraphs. Formerly the interaction between the manager and the supplicant was handled in an apparent way where the internal state of each interaction was in plain sight. This made the flow cumbersome to follow and therefor each interaction is now confined to its own 'Action' object that encapsulates the ping-pong of commands and responses between the manager and the supplicant. All actions are processed in an sequential way and thus there is no longer any need to defer pending actions depending on the interal state of the current interaction. Configuration changes as well as events issued by the supplicant where new actions can be created are handled in this fashion. Of note are both signal-handlers, '_handle_cmds' and '_handle_events' respectively. The state report, which provides the information about the current state of connectivity to a given wireless network, was dealt with in the same vein and its handling was spread across the manager implementation. Again, to make it easier to follow, the generation of the state report is now purely driven by the 'Join_state' object. This object encapsulates the state of connectivity and is normally updated by events issued from the supplicant (see '_handle_events'). It is also incorporated when handling command responses (see '_handle_cmds'). Handling of timed-actions, like scan and signal quality update requests, was done by setting a timeout at the Timer session directly and thus only one timed-action could be pending at any time. This excluded dealing with timed-actions like connected-scanning and signal quality polling concurrently. This was changed and now a One_shot_timeout is used to programm each concurrent timed-action. For implementing the communication channel for the CTRL interface the manager and supplicant use a shared memory buffer, the Msg_buffer. Since the CTRL interface for Genode was implemented using C, some shenanigans were performed to access the memory buffer. Now the CTRL interface implementation uses C++ and only exports the functions required by the supplicant as C. This simplifies the usage of the Msg_buffer and allows for removing the global functions needed for synchronizing the Msg_buffer access as those are now part of the object itself via the 'Notify_interface'. Fixes #5341. |
||
Josef Söntgen
|
572d406d66 |
sculpt_manager: remove inactive use_11n attribute
This is a follow-up commit to #4506 where the inactive 'use_11n' attribute was already removed. Issue #5262. |
||
Norman Feske
|
b723b11b30 |
Modularize Sculpt OS image creation
This patch equips Sculpt with the ability to customize the system image in very flexible ways. All customizable aspects of the image have been relocated from the former sculpt.run script and the accompanied gems/run/sculpt/ directory to a new location - the sculpt/ directory - which can exist in any repository. The directory at repos/gems/sculpt/ serves as reference. The sculpt directory can host any number of <name>-<board>.sculpt files, each containing a list of ingredients to be incorporated into the Sculpt system image. The <name> can be specified to the sculpt.run script. E.g., the following command refers to the 'default-pc.sculpt' file: make run/sculpt KERNEL=nova BOARD=pc SCULPT=default If no 'SCULPT' argument is supplied, the value 'default' is used. A .sculpt file refers to a selection of files found at various subdirectries named after their respective purpose. In particular, There exists a subdirectory for each file in Sculpt's config fs, like nitpicker, drivers... The .sculpt file selects the alternative to use by a simple tag-value notation. drivers: pc The supported tags are as follows. *Optional* selection of /config files. If not specified, those files are omitted, which prompts Sculpt to manage those configurations automatically or via the Leitzentrale GUI: fonts nic_router event_filter wifi runtime gpu_drv Selection of mandatory /config files. If not specified, the respective 'default' alternative will be used. nitpicker deploy fb_drv clipboard drivers numlock_remap leitzentrale usb system ram_fs Furthermore, the .sculpt file supports the optional selection of supplemental content such as a set of launchers. launches: nano3d system_shell Another type of content are the set of blessed pubkey/download files used for installing and verifying software on target. With the new version, it has become possible to supply a depot with the the system image. The depot content is assembled according to the 'pkg' attributes found in launcher files and the selected deploy config. The resulting depot is incorporated into the system image as 'depot.tar' archive. It can be supplied to the Sculpt system by mounting it into the ram fs as done by the 'ram_fs/depot' configuration for the ram fs. It is possible to add additional boot modules to the system image. There are two options. build: <list of targets> This tag prompts the sculpt.run script to build the specified targets directly using the Genode build system and add the created artifacts into the system image as boot modules. import: <list of depot src or pkg archives> This tag instructs Sculpt to supply the specifid depot-archive content as boot modules to the system image. This change eliminates the need for board-specific pkg/sculpt-<board> archives. The board-specific specializations can now be placed directly into the respective .sculpt files by using 'import:'. To make the use of Sculpt as testbed during development more convenient, the log output of the drivers, leitzentrale, and runtime subsystems can be redirected to core using the optional 'LOG=core' argument, e.g., make run/sculpt KERNEL=linux BOARD=linux LOG=core The former pkg/sculpt-installation and pkg/sculpt-installation-pc archives have been replaced by pkg/sculpt_distribution-pc, which references the generic pkg/sculpt_distribution archive. Those pkgs are solely used for publishing / distribution purposes. Fixes #4369 |