sbft.h File Reference

SRP boot firmware table. More...

#include <stdint.h>
#include <gpxe/acpi.h>
#include <gpxe/scsi.h>
#include <gpxe/srp.h>
#include <gpxe/ib_srp.h>

Go to the source code of this file.

Data Structures

struct  sbft_table
 SRP Boot Firmware Table. More...
struct  sbft_scsi_subtable
 sBFT SCSI subtable More...
struct  sbft_srp_subtable
 sBFT SRP subtable More...
struct  sbft_ib_subtable
 sBFT IB subtable More...
struct  gpxe_sbft
 An sBFT created by gPXE. More...

Defines

#define SBFT_SIG   "sBFT"
 SRP Boot Firmware Table signature.

Typedefs

typedef uint16_t sbft_off_t
 An offset from the start of the sBFT.

Functions

 FILE_LICENCE (BSD2)
int sbft_fill_data (struct srp_device *srp)
 Fill in all variable portions of sBFT.


Detailed Description

SRP boot firmware table.

The working draft specification for the SRP boot firmware table can be found at

http://etherboot.org/wiki/srp/sbft

Definition in file sbft.h.


Define Documentation

#define SBFT_SIG   "sBFT"

SRP Boot Firmware Table signature.

Definition at line 54 of file sbft.h.


Typedef Documentation

An offset from the start of the sBFT.

Definition at line 57 of file sbft.h.


Function Documentation

FILE_LICENCE ( BSD2   ) 

int sbft_fill_data ( struct srp_device srp  ) 

Fill in all variable portions of sBFT.

Parameters:
srp SRP device
Return values:
rc Return status code

Definition at line 71 of file sbft.c.

References __from_data16, acpi_fix_checksum(), assert, DBGC, DBGC_HDA, ib_srp_parameters::dgid, sbft_ib_subtable::dgid, ib_srp_params(), ib_srp_transport, srp_device::lun, sbft_scsi_subtable::lun, memcpy, segoff::offset, ib_srp_parameters::pkey, sbft_ib_subtable::pkey, srp_device::port_ids, sbft_srp_subtable::port_ids, rm_ds, sbftab, segoff::segment, ib_srp_parameters::service_id, sbft_ib_subtable::service_id, ib_srp_parameters::sgid, sbft_ib_subtable::sgid, and srp_device::transport.

Referenced by ib_srpboot().

00071                                               {
00072         struct sbft_scsi_subtable *sbft_scsi = &sbftab.scsi;
00073         struct sbft_srp_subtable *sbft_srp = &sbftab.srp;
00074         struct sbft_ib_subtable *sbft_ib = &sbftab.ib;
00075         struct ib_srp_parameters *ib_params;
00076         struct segoff rm_sbftab = {
00077                 .segment = rm_ds,
00078                 .offset = __from_data16 ( &sbftab ),
00079         };
00080 
00081         /* Fill in the SCSI subtable */
00082         memcpy ( &sbft_scsi->lun, &srp->lun, sizeof ( sbft_scsi->lun ) );
00083 
00084         /* Fill in the SRP subtable */
00085         memcpy ( &sbft_srp->port_ids, &srp->port_ids,
00086                  sizeof ( sbft_srp->port_ids ) );
00087 
00088         /* Fill in the IB subtable */
00089         assert ( srp->transport == &ib_srp_transport );
00090         ib_params = ib_srp_params ( srp );
00091         memcpy ( &sbft_ib->sgid, &ib_params->sgid, sizeof ( sbft_ib->sgid ) );
00092         memcpy ( &sbft_ib->dgid, &ib_params->dgid, sizeof ( sbft_ib->dgid ) );
00093         memcpy ( &sbft_ib->service_id, &ib_params->service_id,
00094                  sizeof ( sbft_ib->service_id ) );
00095         sbft_ib->pkey = ib_params->pkey;
00096 
00097         /* Update checksum */
00098         acpi_fix_checksum ( &sbftab.table.acpi );
00099 
00100         DBGC ( &sbftab, "SRP Boot Firmware Table at %04x:%04x:\n",
00101                rm_sbftab.segment, rm_sbftab.offset );
00102         DBGC_HDA ( &sbftab, rm_sbftab, &sbftab, sizeof ( sbftab ) );
00103 
00104         return 0;
00105 }


Generated on Tue Apr 6 20:01:12 2010 for gPXE by  doxygen 1.5.7.1