-
-
Notifications
You must be signed in to change notification settings - Fork 156
Test Rosewill RC-20001 2.5GBASE-T PCIe x1 Network Adapter #40
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
Comments
Interesting choice. 😅 The top amazon review was an Linux user who stated that drivers were no longer available for download. EDIT you're in luck; community drivers were added to the mainline Linux git repo just a few months back, within this year. However, they appear to only be in the bleeding edge kernel versions for now. |
|
@PixlRainbow - I was specifically recommended this card by someone who is familiar with those drivers :) I'll have to see how I get along! |
Interesting, there was another message waaaay later:
|
Trying with the
On the Pi OS 64-bit ARM kernel, I got the error message:
Going to have to find a way to get the kernel headers... I have run into this three times now—installing |
To get headers for 64-bit Pi OS for now:
The script installs things like Picked up from raspberrypi/Raspberry-Pi-OS-64bit#4 (Edit: Alternatively, I could compile a new kernel in my cross-compile environment with the new driver in it...) (Edit 2: Apparently there is a package available for 64-bit Pi OS now... |
Hmm... that method results in:
I think I'm going to go the cross-compile route instead. |
Cross compiling with the following driver added:
|
All right, also completely revamped my process for the cross-compile. I can now do it all remote, to the running Pi. Easier than I thought it'd be... I'm going to document my experience in the cross-compile README in a few. Anyways, now I rebooted and am getting:
Also checked But checking the interface itself:
Let's plug in a cable...
Blinky lights are good. Now I need to get to setting up my 10G network so I can test a connection between my Mac and this card! |
Gigabit to my Mac:
|
Also, we're hitting the IRQ interrupt limits here; same as I did testing the Intel I340-T4 (in #3). |
To set MTU to 9000: First, apply the patch below to the linux source checkout with diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index 62051e353278..81e3da888d1a 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -52,7 +52,7 @@
#define GENET_Q16_TX_BD_CNT \
(TOTAL_DESC - priv->hw_params->tx_queues * priv->hw_params->tx_bds_per_q)
-#define RX_BUF_LENGTH 2048
+#define RX_BUF_LENGTH 10240
#define SKB_ALIGNMENT 32
/* Tx/Rx DMA register offset, skip 256 descriptors */
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 41a518336673..28cac902cb77 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -22,8 +22,8 @@
/*
* According to 802.3ac, the packet can be 4 bytes longer. --Klika Jan
*/
-#define VLAN_ETH_DATA_LEN 1500 /* Max. octets in payload */
-#define VLAN_ETH_FRAME_LEN 1518 /* Max. octets in frame sans FCS */
+#define VLAN_ETH_DATA_LEN 9000 /* Max. octets in payload */
+#define VLAN_ETH_FRAME_LEN 9018 /* Max. octets in frame sans FCS */
#define VLAN_MAX_DEPTH 8 /* Max. number of nested VLAN tags parsed */
diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
index d6de2b167448..78a12dd0e542 100644
--- a/include/uapi/linux/if_ether.h
+++ b/include/uapi/linux/if_ether.h
@@ -33,8 +33,8 @@
#define ETH_TLEN 2 /* Octets in ethernet type field */
#define ETH_HLEN 14 /* Total octets in header. */
#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */
-#define ETH_DATA_LEN 1500 /* Max. octets in payload */
-#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */
+#define ETH_DATA_LEN 9000 /* Max. octets in payload */
+#define ETH_FRAME_LEN 9014 /* Max. octets in frame sans FCS */
#define ETH_FCS_LEN 4 /* Octets in the FCS */
#define ETH_MIN_MTU 68 /* Min IPv4 MTU per RFC791 */ Second, recompile and push over the updated code. Third, reboot. |
After reboot:
And using iperf:
Er... that can't be right! |
So... I could get:
That's with the Pi side MTU set to 9000, and the Mac side at the default, 1500. When I switch the hardware settings for my OWC TB3 10G port to use Jumbo frames in the macOS GUI, and wait for the interface to re-combobulate itself, it goes down to 0 bits/sec when I do an iperf3 run. I mean, packets are flying, because I'm controlling this thing over the wired network. So what's up with |
Seems like maybe the MikroTik switch/router needs adjusting. Testing with So I just realized the MikroTik switch defaults, I believe, to 'RouterOS', and I just want it to be a dumb switch, so I have to set my Mac to manual IP on the IP address Edit: I did, yay! It's in 'Bridge' mode, and now the switch is getting an IP from my main router. |
THERE we go... had to log into the switch, edit each of the ports for my Mac and the Pi, and manually bump them from Both pings at 9000 bytes and
Hooray! So to recap: To get max 2.5 Gbps throughput on the Pi
Also noting that if you switch from RouterOS to SwitchOS on the MikroTik, you don't have to change any MTU settings; the switch just does it all automatically at that point. The box is a little cooler, too. Neat feature: it has temperature sensors on each of the SFP+ ports, as well as one internally. |
Nice, how about duplex iperf3 testing both RX and TX. server: iperf3 -s & iperf3 -s -p 5202 |
@mayli - Good idea! That'll have to wait, unfortunately—I accidentally released the magic smoke on the Realtek chip when testing it in an external powered riser... |
Rip $20 and let red shirt jeff fix it. |
A few comments, sounds like the label "currently testing" should be removed, or are you buying a new? We all know errors may happen any time, but I wonder if some risers make it more likely than others to trigger such a human error (i.e. by design)? |
@mi-hol - That's my guess. These risers seem to be all over the board in terms of build quality, and none of them have an actual manufacturer attached... there also seems to be dozens of revisions with different features (like different power circuits), and I wonder if this particular one had some wires crossed. The chip popped when I plugged in the CM4 to its 12v power supply, so I'm wondering if there was a surge through it's 12v PCIe rail that doubled the voltage into the card for some reason. The 2.5 GbE adapter doesn't seem to have any extra power filtering like I see on most other PCIe boards... so that could also be something where the card is supposed to accept a wider range of voltages/wattage and it just got too much straight into the chip. |
From Fedor Suchkov on YouTube:
|
lol, just a couple days after I let out the magic smoke, AvE mentioned the importance of said smoke in his latest BOLTR video: https://youtu.be/x0UGErQDKPw?t=65 |
NOW THERE ARE TWO! #46 (Also, I do have a replacement on hand since two days ago... haven't had the time to pick back up on testing it. There was this big Christmas holiday thing that required some of my attention :P) |
@mayli - I tested with
Using that, it seems like the result still maxes out around 2.47 Gbps (with MTU 9000) TX, and ~70 Mbps RX.
Shouldn't that be a bit more symmetrical? I'm showing full duplex for the connections on both my Mac and the Pi. And using ethtool is showing it's connected as full duplex:
|
Responding to the YouTube comment about testing with
Bidirectional was a bit more wonky:
If I limited the bitrate ( |
A blog post inspired by this issue: Setting 9000 MTU (Jumbo Frames) on Raspberry Pi OS |
An interesting finding in the Pi Forums too (which explains why some of my
Source: https://www.raspberrypi.org/forums/viewtopic.php?p=1736824#p1736824 |
Once I have a video and blog post up, I should add links to them from here as well as the page for this card on the site. |
Have you tried to manually tweak the IRQ balance over to "round-robin" interrupts over different cores? This is a pain in the arse to do so however. |
@stevefan1999-personal - Yes, check out the efforts in #3 — it seems like it's impossible to do on the Pi. |
I think I can close this off as it's working as expected :) |
I just bought a Raidsonic ICY BOX IB-LAN300-PCI 2.5 Gigabit Ethernet PCIe card and it looks identical to this card except for a different QC sticker. Everything else is exactly the same. So a rebrand of this card. |
Uh oh!
There was an error while loading. Please reload this page.
I just received a Rosewill RC-20001 2.5GBASE-T PCIe x1 Network Adapter. It should be able to get full speed out of the Pi.
It has the RTL8125B chip on it, and Realtek has a drivers page for the card here.
The idea I have for this card is setting it up as a 2.5 GbE NAS, which will have enough bandwidth to (hopefully) copy 200+ MB/sec over the network. We'll see!
The text was updated successfully, but these errors were encountered: