IBM BladeCenter Open Fabric Manager (BOFM)
Definition in file bofm.h.
| int bofm |
( |
void * | bofmtab, |
|
|
struct pci_device * | pci ) |
|
extern |
Process BOFM table.
- Parameters
-
| bofmtab | BOFM table |
| pci | PCI device |
- Return values
-
Definition at line 235 of file bofm.c.
235 {
241 int skip;
243 int bofmrc;
244
245
246 bofmhdr = bofmtab;
251 goto err_bad_signature;
252 }
255
256
257
258
259 switch ( bofmhdr->
action ) {
264 break;
267 skip = 0;
268 break;
269 default:
273 goto err_bad_action;
274 }
275
276
280 goto err_find_driver;
281 }
282
283
286 goto err_probe;
287 }
288
289
291 if ( ! bofmsec ) {
292 DBG (
"BOFM: No EN section found\n" );
294 goto err_no_en_section;
295 }
296
297
299 offset +=
sizeof ( *en ) ) {
300 en = ( ( (
void * ) bofmsec ) +
offset );
301 DBG2 (
"BOFM: EN entry found:\n" );
304 DBG (
"BOFM: slot %d port %d has no PCI mapping\n",
305 en->slot, (
en->port + 1 ) );
306 continue;
307 }
308 DBG (
"BOFM: slot %d port %d%s is " PCI_FMT " mport %d\n",
309 en->slot, (
en->port + 1 ),
310 ( (
en->slot ||
en->port ) ?
"" :
"(?)" ), 0,
315 DBG (
"BOFM: " PCI_FMT " mport %d ignored\n", 0,
319 continue;
320 }
323 } else {
325 }
326 DBG2 (
"BOFM: EN entry after processing:\n" );
328 }
329
331
332 err_no_en_section:
334 err_probe:
335 err_find_driver:
336 err_bad_action:
337 err_bad_signature:
338 return bofmrc;
339}
struct arbelprm_rc_send_wqe rc
static void bofm_remove(struct pci_device *pci)
Remove PCI device.
static int bofm_probe(struct pci_device *pci)
Probe PCI device for BOFM driver.
static struct bofm_device * bofm_find_busdevfn(unsigned int busdevfn)
Find BOFM device matching PCI bus:dev.fn address.
static struct bofm_section_header * bofm_locate_section(struct bofm_global_header *bofmhdr, uint32_t magic)
Locate BOFM table section.
int bofm_find_driver(struct pci_device *pci)
Find BOFM driver for PCI device.
#define BOFM_MAGIC_FMT
BOFM magic value debug message format.
#define BOFM_IOAA_MAGIC
BOFM table header signature.
#define BOFM_MAGIC_ARGS(magic)
BOFM magic value debug message arguments.
#define BOFM_SKIP_INIT
Skip option ROM initialisation.
uint16_t offset
Offset to command line.
#define BOFM_ACTION_PARM
Update MAC/WWN and initialise device.
#define BOFM_ACTION_DFLT
Restore MAC/WWN to factory default.
#define BOFM_ACTION_NONE
Just initialise the device.
#define BOFM_ACTION_UPDT
Update MAC/WWN.
#define BOFM_ACTION_HVST
Harvest MAC/WWN.
#define BOFM_EN_CSM_FAILED
Entry has been used but failed.
#define BOFM_EN_CSM_SUCCESS
Entry has been used successfully.
#define BOFM_EN_MAP_PFA
Port mapping is by PCI bus:dev.fn.
#define BOFM_EN_MAP_MASK
Port mapping mask.
#define BOFM_ERR_INVALID_ACTION
Invalid action string.
#define BOFM_ERR_DEVICE_ERROR
Device error prohibited MAC/WWN update.
#define BOFM_SUCCESS
Successful.
#define BOFM_EN_MAGIC
EN start marker.
#define PCI_FUNC(busdevfn)
#define PCI_BUS(busdevfn)
#define PCI_SLOT(busdevfn)
struct pci_device * pci
Underlying PCI device.
BOFM Ethernet parameter entry.
References bofm_global_header::action, bofm(), BOFM_ACTION_DFLT, BOFM_ACTION_HVST, BOFM_ACTION_NONE, BOFM_ACTION_PARM, BOFM_ACTION_UPDT, BOFM_EN_CSM_FAILED, BOFM_EN_CSM_SUCCESS, BOFM_EN_MAGIC, BOFM_EN_MAP_MASK, BOFM_EN_MAP_PFA, BOFM_ERR_DEVICE_ERROR, BOFM_ERR_INVALID_ACTION, bofm_find_busdevfn(), bofm_find_driver(), BOFM_IOAA_MAGIC, bofm_locate_section(), BOFM_MAGIC_ARGS, BOFM_MAGIC_FMT, bofm_probe(), bofm_remove(), BOFM_SKIP_INIT, BOFM_SUCCESS, DBG, DBG2, DBG2_HDA, en, bofm_section_header::length, bofm_global_header::magic, offset, bofm_device::pci, PCI_ARGS, PCI_BUS, PCI_FMT, PCI_FUNC, PCI_SLOT, bofm_global_header::profile, and rc.
Referenced by bofm(), bofm_dummy_harvest(), bofm_dummy_update(), bofm_en(), bofm_find_busdevfn(), bofm_init(), bofm_register(), bofm_test(), bofm_unregister(), efi_bofm_start(), hermon_bofm_harvest(), and hermon_bofm_update().