summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/intel.h
diff options
context:
space:
mode:
authorMichael Brown2015-05-16 15:35:13 +0200
committerMichael Brown2015-05-16 15:54:37 +0200
commitbb1e1048f681c7b3cb0daf04a210ced3222089ee (patch)
treefffd1a0d0e471ba3b4d2050c5d8d21d68360dca0 /src/drivers/net/intel.h
parent[intel] Allow for the use of advanced TX descriptors (diff)
downloadipxe-bb1e1048f681c7b3cb0daf04a210ced3222089ee.tar.gz
ipxe-bb1e1048f681c7b3cb0daf04a210ced3222089ee.tar.xz
ipxe-bb1e1048f681c7b3cb0daf04a210ced3222089ee.zip
[intel] Add support for mailbox used by virtual functions
Virtual functions use a mailbox to communicate with the physical function driver: this covers functionality such as obtaining the MAC address. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/intel.h')
-rw-r--r--src/drivers/net/intel.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/drivers/net/intel.h b/src/drivers/net/intel.h
index 2656cda5..ce9e3f46 100644
--- a/src/drivers/net/intel.h
+++ b/src/drivers/net/intel.h
@@ -243,6 +243,29 @@ intel_init_ring ( struct intel_ring *ring, unsigned int count, unsigned int reg,
ring->describe = describe;
}
+/** An Intel virtual function mailbox */
+struct intel_mailbox {
+ /** Mailbox control register */
+ unsigned int ctrl;
+ /** Mailbox memory base */
+ unsigned int mem;
+};
+
+/**
+ * Initialise mailbox
+ *
+ * @v mbox Mailbox
+ * @v ctrl Mailbox control register
+ * @v mem Mailbox memory register base
+ */
+static inline __attribute__ (( always_inline )) void
+intel_init_mbox ( struct intel_mailbox *mbox, unsigned int ctrl,
+ unsigned int mem ) {
+
+ mbox->ctrl = ctrl;
+ mbox->mem = mem;
+}
+
/** An Intel network card */
struct intel_nic {
/** Registers */
@@ -261,6 +284,9 @@ struct intel_nic {
/** EEPROM address shift */
unsigned int eerd_addr_shift;
+ /** Mailbox */
+ struct intel_mailbox mbox;
+
/** Transmit descriptor ring */
struct intel_ring tx;
/** Receive descriptor ring */