summaryrefslogtreecommitdiffstats
path: root/src/net/eth_slow.c
diff options
context:
space:
mode:
authorMichael Brown2010-10-07 17:03:16 +0200
committerMichael Brown2010-10-07 20:15:04 +0200
commit88dd921e24af0893734d4e197d646cfc7732ed54 (patch)
tree8ecbe7ef1e5d84b2243894769a9ab1251d5c56de /src/net/eth_slow.c
parent[int13] Fix typo in debug message (diff)
downloadipxe-88dd921e24af0893734d4e197d646cfc7732ed54.tar.gz
ipxe-88dd921e24af0893734d4e197d646cfc7732ed54.tar.xz
ipxe-88dd921e24af0893734d4e197d646cfc7732ed54.zip
[netdevice] Pass both link-layer addresses in net_tx() and net_rx()
FCoE requires the use of fabric-provided MAC addresses, which breaks the assumption that the net device's MAC address is implicitly the source address for net_tx() and the (unicast) destination address for net_rx(). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/eth_slow.c')
-rw-r--r--src/net/eth_slow.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/net/eth_slow.c b/src/net/eth_slow.c
index 4b2df280..e5c7ec9d 100644
--- a/src/net/eth_slow.c
+++ b/src/net/eth_slow.c
@@ -174,7 +174,8 @@ static int eth_slow_lacp_rx ( struct io_buffer *iobuf,
/* Send response */
eth_slow_lacp_dump ( iobuf, netdev, "TX" );
- return net_tx ( iobuf, netdev, &eth_slow_protocol, eth_slow_address );
+ return net_tx ( iobuf, netdev, &eth_slow_protocol, eth_slow_address,
+ netdev->ll_addr );
}
/**
@@ -218,7 +219,7 @@ static int eth_slow_marker_rx ( struct io_buffer *iobuf,
marker->marker.tlv.type = ETH_SLOW_TLV_MARKER_RESPONSE;
eth_slow_marker_dump ( iobuf, netdev, "TX" );
return net_tx ( iobuf, netdev, &eth_slow_protocol,
- eth_slow_address );
+ eth_slow_address, netdev->ll_addr );
} else {
/* Discard all other marker packets */
free_iob ( iobuf );
@@ -231,11 +232,13 @@ static int eth_slow_marker_rx ( struct io_buffer *iobuf,
*
* @v iobuf I/O buffer
* @v netdev Network device
+ * @v ll_dest Link-layer destination address
* @v ll_source Link-layer source address
* @ret rc Return status code
*/
static int eth_slow_rx ( struct io_buffer *iobuf,
struct net_device *netdev,
+ const void *ll_dest __unused,
const void *ll_source __unused ) {
union eth_slow_packet *eth_slow = iobuf->data;