aboutsummaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2013-03-01 16:32:16 +0100
committerMichael Brown <mcb30@ipxe.org>2013-03-01 16:22:23 +0000
commit7d64abbc5d0b5dfe4810883f372b905a359f2697 (patch)
treea22f7c4810da1f875998f42a55f682acd63f3f1b /src/drivers
parent7426177d631c0fd8b2ef3ffae4449637d5bca32a (diff)
downloadipxe-7d64abbc5d0b5dfe4810883f372b905a359f2697.zip
ipxe-7d64abbc5d0b5dfe4810883f372b905a359f2697.tar.gz
ipxe-7d64abbc5d0b5dfe4810883f372b905a359f2697.tar.bz2
[iscsi] Include 802.1Q VLAN identifier in iBFT
The iBFT NIC section has a VLAN field which must be filled in so that iSCSI booting works over VLANs. Unfortunately it is unclear from the IBM specification linked in ibft.c whether the VLAN field is just the 802.1Q VLAN Identifier or the full 802.1Q TCI. For now just fill in the VID, the Priority Code Point and Drop Eligible Indicator could be set in the future if it turns out they should be present too. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/block/ibft.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/drivers/block/ibft.c b/src/drivers/block/ibft.c
index f160963..75ca51a 100644
--- a/src/drivers/block/ibft.c
+++ b/src/drivers/block/ibft.c
@@ -37,6 +37,7 @@ FILE_LICENCE ( BSD2 );
#include <ipxe/in.h>
#include <ipxe/netdevice.h>
#include <ipxe/ethernet.h>
+#include <ipxe/vlan.h>
#include <ipxe/dhcp.h>
#include <ipxe/iscsi.h>
#include <ipxe/ibft.h>
@@ -264,6 +265,8 @@ static int ibft_fill_nic ( struct ibft_nic *nic,
DBG ( "iBFT NIC subnet = /%d\n", nic->subnet_mask_prefix );
/* Extract values from net-device configuration */
+ nic->vlan = cpu_to_le16 ( vlan_tag ( netdev ) );
+ DBG ( "iBFT NIC VLAN = %02x\n", le16_to_cpu ( nic->vlan ) );
if ( ( rc = ll_protocol->eth_addr ( netdev->ll_addr,
nic->mac_address ) ) != 0 ) {
DBG ( "Could not determine iBFT MAC: %s\n", strerror ( rc ) );