Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

metal: hw enablement of 10G+ networking equipment #2379

Merged
merged 10 commits into from
Aug 30, 2022

Conversation

foersleo
Copy link
Contributor

@foersleo foersleo commented Aug 25, 2022

Issue number: #2361 #2246

Closes #2361

Description of changes:

Enable 10G+ networking equipment for the metal variants for most vendors. While there is some cards that provide quite some advanced network features we are aiming for a meaningful minimum here, by enabling mostly the base Ethernet capabilities for these devices.

For advanced features we will have a separate discussion on if we need these out of the box or if those are valuable at all in the Bottlerocket use case. Features that I have identified and will discuss with the team: Infiniband support, DCB, Fibre Channel, SCSI/ISCSI (target) capabilities, offloading capabilities for some of the hardware (crypto offloading, flow processing).

As it is easier to add those features in later than to add them now and disable them later I have aimed for as few special features as possible.

For any Options resulting from enabling a specific device family I have explicitly set those to the desired setting.

The following options are not set explicitly as those are device families that the kernel has disabled by default:

# Option available due to CONFIG_NET_VENDOR_AMD being set
AMD8111_ETH n
PCNET32 n

# Options available due to CONFIG_NET_VENDOR_CHELSIO being set
CHELSIO_T1 n
CHELSIO_T3 n

Let's discuss if we we want to set those explicitly or if we are fine with these devices being disabled implicitly. Given that all these drivers are for older hardware it is reasonable to assume that they will not change their default down the line.

In addition there is option AMD_XGBE_HAVE_ECC which is set conditionally based on the architecture being X86 when AMD_XGBE is set. As we currently do not have separate config fragments for aarch64 and x86_64 we can not explicitly set it without causing trouble.

Testing done:

Built some versions and compared resulting kernel configurations with the tooling currently under review in #2368

config-aarch64-5.10-aws-k8s-1.23-diff:	  0 removed,   0 added,   0 changed
config-aarch64-5.15-aws-dev-diff:	  0 removed,   0 added,   0 changed
config-aarch64-5.15-metal-dev-diff:	  0 removed,  30 added,  11 changed
config-x86_64-5.10-aws-k8s-1.23-diff:	  0 removed,   0 added,   0 changed
config-x86_64-5.10-metal-k8s-1.23-diff:	  0 removed,  32 added,  11 changed
config-x86_64-5.15-aws-dev-diff:	  0 removed,   0 added,   0 changed
config-x86_64-5.15-metal-dev-diff:	  0 removed,  32 added,  11 changed

The full resulting config diff-report can be found in https://gist.github.com/foersleo/918342143826d4291c6d84bcc4e18194

Terms of contribution:

By submitting this pull request, I agree that this contribution is dual-licensed under the terms of both the Apache License, version 2.0, and the MIT license.

Reorder intels networking configuration so that they are all in
proximity to each other and in the same order as their definition in the
Kconfig file for easier comparability.

No functional change.

Signed-off-by: Leonard Foerster <[email protected]>
The main drivers we are interested in here are I40E, ICE, and FM10K.
Explicitly setting the resulting options as follows:

* Disable DCB for I40E, we likely do not need DCB
* Disable IB support for I40E (and ICE on 5.15):
    *5.10: INFINIBAND_I40IW
    *5.15: INFINIBAND_IRDMA
* Enable PLDMFW firmware update format through PLDM needed by ICE

Signed-off-by: Leonard Foerster <[email protected]>
We are interested in AMD_XGBE. Explicitly disable DCE for that
driver as we likely do not need DCB.

In addition this driver will select option AMD_XGBE_HAVE_ECC on X86
platforms. As this config fragment is used on both x86 and aarch64
platforms we can not explicitly set it.

Signed-off-by: Leonard Foerster <[email protected]>
For now disable support for DCB for these devices as well as the
Infiniband support, Crypto offloading capabilities, and the ISCSI
target driver.

Signed-off-by: Leonard Foerster <[email protected]>
In order for the Emulex driver to be of use we additionally need to add
the chipset drivers for BE2, BE3, Lancer and Skyhawk chipsets.

Signed-off-by: Leonard Foerster <[email protected]>
Copy link
Contributor

@zmrow zmrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉 🌮

Explicitly set the resulting DCA support for that driver to its default
value.

Signed-off-by: Leonard Foerster <[email protected]>
The main drivers here are SFC and SFC_FALCON. In addition configure the
options for these drivers to support HWMON (SFC_MCDI_MON) and SRIOV.

Disable SFC_MCDI_LOGGING as that is not needed (debug logging for
communication between driver and firmware).

Signed-off-by: Leonard Foerster <[email protected]>
@foersleo
Copy link
Contributor Author

Force push fixed the two bugs I had missed before sending this. Currently running the diff-kernel-config script again. Will share the output of that as soon as it finishes.

@foersleo
Copy link
Contributor Author

Update kernel-config diff in the gist linked above and the statistics after the last change.

Copy link
Contributor

@bcressey bcressey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎸

@foersleo foersleo merged commit e3bd91a into bottlerocket-os:develop Aug 30, 2022
@foersleo foersleo deleted the hw_enablement branch August 30, 2022 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

metal: Support the Intel X710 NIC
4 participants