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

Max link speed of E810-CAM2 on Windows #665

Open
gitcchi opened this issue Dec 24, 2023 · 3 comments
Open

Max link speed of E810-CAM2 on Windows #665

gitcchi opened this issue Dec 24, 2023 · 3 comments

Comments

@gitcchi
Copy link

gitcchi commented Dec 24, 2023

I am using a Intel E810-CAM2 based pcie card, with a QSFP28 passive cable. My development platform is Windows 11 and with this config I am limited to 8-9Gbps.
I am only getting a link speed of 10g instead of 100g, which is what I believe is limiting the performance.
MT: 2023-12-24 01:26:44, mt_eth_link_dump(0), link_speed 10g link_status 1 link_duplex 1 link_autoneg 1

Am I missing something or is this normal behavior due to some lacking driver/runtime support on Windows?

@gitcchi gitcchi changed the title Link speed of Max link speed of E810-CAM2 on Windows Dec 24, 2023
@frankdjx
Copy link
Collaborator

Our Windows setup successfully achieves the full 100Gbps with the E810 NIC. The 10Gbps link speed might result from hardware negotiation issues between the NIC and the switch. I have two clarifications to request:

What is the link speed when the NIC uses the default Windows driver?
Have you encountered a similar issue when operating under a Linux OS?

@gitcchi
Copy link
Author

gitcchi commented Dec 28, 2023

I am not using a switch, the ports on the card are connected directly to each other. It serves as a minimal dev environment.

When in using the default driver (E810-C for QSFP) it shows 10Gbps with auto negotiation. If I force both ports to 100Gbps they will connect with that speed.
I have no Linux setup for this this card, so I cannot tell you what happens there.

Is it possible to disable autoneg and force network link speeds with MTL and the netuio driver?

@frankdjx
Copy link
Collaborator

Seems like the 100g cable used has compatible problem on the auto negotiation. Can you find another one?

And for the fixed speed, link_speeds can be specified in struct rte_eth_conf

struct rte_eth_conf {
	uint32_t link_speeds; /**< bitmap of RTE_ETH_LINK_SPEED_XXX of speeds to be
				used. RTE_ETH_LINK_SPEED_FIXED disables link
				autonegotiation, and a unique speed shall be
				set. Otherwise, the bitmap defines the set of
				speeds to be advertised. If the special value
				RTE_ETH_LINK_SPEED_AUTONEG (0) is used, all speeds
				supported are advertised. */

Below is the code part of MTL to initial struct rte_eth_conf, can you try if below diff works for your case.

git diff
diff --git a/lib/src/dev/mt_dev.c b/lib/src/dev/mt_dev.c
index d0fb891..7316565 100644
--- a/lib/src/dev/mt_dev.c
+++ b/lib/src/dev/mt_dev.c
@@ -916,6 +916,7 @@ static int dev_config_port(struct mt_interface* inf) {
     port_conf.rxmode.mq_mode = RTE_ETH_MQ_RX_RSS;
   }

+  port_conf.link_speeds = RTE_ETH_LINK_SPEED_100G;
   ret = rte_eth_dev_configure(port_id, nb_rx_q, nb_tx_q, &port_conf);
   if (ret < 0) {
     err("%s(%d), rte_eth_dev_configure fail %d\n", __func__, port, ret);

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

No branches or pull requests

2 participants