Since SoftRoCE is routable, that is, the packets will cross the LAN. It is very possible that the udp port 4791 is blocked. So another udp port is necessary to act as a backup. This will enhance the robustness of SoftRoCE. After this feature is enabled, when the rxe is intialized, there are 2 udp ports created. The udp port 4791 is used firstly. Host1 Host2 +---------------+ +------------+ | udp4791 eth0 |<------------>|eth0 0xc000 | | oxc000 eth0 |<------------>|eth0 udp4791| | udp4891 eth0 | |eth0 udp4891| +---------------+ +------------+ When some errors occur, for example, the port 4791 is blocked by iptable rule: iptables -I OUTPUT -p udp --dport 4791 -j DROP The port 4891 is used as below. Host1 Host2 +---------------+ +------------+ | udp4891 eth0 |<------------>|eth0 0xd000 | | oxd000 eth0 |<------------>|eth0 udp4891| | udp4791 eth0 | |eth0 udp4791| +---------------+ +------------+ The followings are the steps to simulate the feature introduced into Soft RoCE. The steps to make tests: 1. Enable the following kernel options: CONFIG_RDMA_RXE_DUAL_PORT <---this feature, default is disable CONFIG_DEBUG_KMEMLEAK <---Check the kernel memory leak CONFIG_DEBUG_OBJECTS <---Check kernel memory double free 2. Follow the above network, run the following commands: Server: rping -s -a 192.168.200.131 -v -C 100000 Client: rping -c -a 192.168.200.131 -v -C 100000 3. run the following iptable rule: iptables -I OUTPUT -p udp --dport 4791 -j DROP 4. tcpdump -ni ethXX udp We will find the udp dest port is changed to 4891 from 4791. Now this feature is dependent on the commit 9fd4350 ("IB/rxe: avoid double kfree_skb"). Without this commit, the host will crash because of double free skb. Zhu Yanjun -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html