No, the 2nd case (a failure to get the list of iwarp-only ip addresses)
will cause rdma apps to not receive any incoming connections.
Consider we have eth1 with 1.1.1.1/24. Next, the admin creates the
iwarp interface thusly:
ifconfig eth1:iw 2.2.2.2 netmask 255.255.255.0 up
The iw_cxgb3 driver gets a netblock notifier event for the addition of
the eth1:iw interface, but FAILS to alloc the memory to keep track that
2.2.2.2 is the iwarp-only address.
Next an rdma app binds to 0.0.0.0, port X. The iw_cxgb3 attempts to map
0.0.0.0 to the set of valid iwarp addresses, but there are none.
iw_cxgb3 logs a warning saying no addresses are available. The
application ends up not listening to any address.
So TCP apps aren't affected.
Also, if the admin notes the error log entry, and re-initializes the
eth1:iw interface -and- this time the kmalloc() works, then the existing
rdma app bound to 0.0.0.0 port X will then start receiving connect
requests to 2.2.2.2 port X.
Hope this makes sense.
I think its too big overhead, and pretty invasive on the low level cxgb3
driver. I think having a device in the 'ifconfig -a' after iw_cxgb3 is
loaded and devices discovered would be a good thing for the admin. This
is the angle Roland suggested. I'm just not sure how to implement it.
But if someone could explain how I might create this full netdevice as a
pseudo device on top of the real one, maybe I could implement it.
Note that non TCP traffic still needs to utilize this interface for ND
to work properly with the RDMA core.
Ok, now I get it. :)
Steve.
-