summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2010-09-19 18:35:53 +0200
committerMichael Brown2010-09-21 03:12:06 +0200
commit26a50c3a11f7858753c643dce7076f2e7349465d (patch)
tree80afb2c000f1d8b381f681a4d96d9fb12ffd85f7 /src
parent[infiniband] Avoid leaving uninitialised lists in struct ib_device (diff)
downloadipxe-26a50c3a11f7858753c643dce7076f2e7349465d.tar.gz
ipxe-26a50c3a11f7858753c643dce7076f2e7349465d.tar.xz
ipxe-26a50c3a11f7858753c643dce7076f2e7349465d.zip
[infiniband] Add the notion of an Ethernet queue pair type
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/drivers/net/ipoib.c7
-rw-r--r--src/include/ipxe/infiniband.h1
-rw-r--r--src/net/infiniband.c2
3 files changed, 9 insertions, 1 deletions
diff --git a/src/drivers/net/ipoib.c b/src/drivers/net/ipoib.c
index 52ac5f03a..09c89bdc3 100644
--- a/src/drivers/net/ipoib.c
+++ b/src/drivers/net/ipoib.c
@@ -485,6 +485,7 @@ static void ipoib_complete_recv ( struct ib_device *ibdev __unused,
struct ipoib_mac ll_src;
struct ipoib_peer *src;
+ /* Record errors */
if ( rc != 0 ) {
netdev_rx_err ( netdev, iobuf, rc );
return;
@@ -499,6 +500,12 @@ static void ipoib_complete_recv ( struct ib_device *ibdev __unused,
return;
}
ipoib_hdr = iobuf->data;
+ if ( ! av ) {
+ DBGC ( ipoib, "IPoIB %p received packet without address "
+ "vector\n", ipoib );
+ netdev_rx_err ( netdev, iobuf, -ENOTTY );
+ return;
+ }
/* Parse source address */
if ( av->gid_present ) {
diff --git a/src/include/ipxe/infiniband.h b/src/include/ipxe/infiniband.h
index fc04dc873..be2b6e78d 100644
--- a/src/include/ipxe/infiniband.h
+++ b/src/include/ipxe/infiniband.h
@@ -135,6 +135,7 @@ enum ib_queue_pair_type {
IB_QPT_GSI,
IB_QPT_UD,
IB_QPT_RC,
+ IB_QPT_ETH,
};
/** An Infiniband Queue Pair */
diff --git a/src/net/infiniband.c b/src/net/infiniband.c
index 207342710..bdfc45d6b 100644
--- a/src/net/infiniband.c
+++ b/src/net/infiniband.c
@@ -483,7 +483,7 @@ void ib_complete_send ( struct ib_device *ibdev, struct ib_queue_pair *qp,
*
* @v ibdev Infiniband device
* @v qp Queue pair
- * @v av Address vector
+ * @v av Address vector, or NULL
* @v iobuf I/O buffer
* @v rc Completion status code
*/