The rping server command('rping -s') fails at line:308 in tcp_usr_bind(), this is because of the uninitialize "cb->sin.ss_len" variable in rping.c.
300 tcp_usr_bind(struct socket *so, struct sockaddr *nam, struct thread *td)
301 {
302 int error = 0;
303 struct inpcb *inp;
304 struct tcpcb *tp = NULL;
305 struct sockaddr_in *sinp;
306
307 sinp = (struct sockaddr_in *)nam;
308 if (nam->sa_len != sizeof (*sinp))
309 return (EINVAL);
Note that this issue is only seen with the command "rping -s", but not with "rping -s -a <ip>".
Also, this issue is observed with Chelsio iWARP driver and may not occur on other RDMA drivers. I believe any RDMA driver that uses TCP kernel stack(offload mode) should hit this issue.
Attached patch fixes this issue. Please review.