summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/intelx.c
diff options
context:
space:
mode:
authorMichael Brown2015-05-16 15:26:00 +0200
committerMichael Brown2015-05-16 15:54:31 +0200
commit9e2121be0d5d2b25173503c4f577471bec618928 (patch)
tree3361e62b094fbde0bc5b994a054171ca2a06197a /src/drivers/net/intelx.c
parent[intel] Expose intel_diag() for use by other Intel NIC drivers (diff)
downloadipxe-9e2121be0d5d2b25173503c4f577471bec618928.tar.gz
ipxe-9e2121be0d5d2b25173503c4f577471bec618928.tar.xz
ipxe-9e2121be0d5d2b25173503c4f577471bec618928.zip
[intel] Allow for the use of advanced TX descriptors
Intel virtual function NICs almost work with the use of "legacy" transmit and receive descriptors (which are backwards compatible right back to the original Intel Gigabit NICs). Unfortunately the "TX switching" feature (which allows for VM<->VM traffic to be looped back within the NIC itself) does not work when a legacy TX descriptor is used: the packet is instead sent onto the wire. Fix by allowing for the use of an "advanced" TX descriptor (containing exactly the same information as is found in the "legacy" descriptor). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/intelx.c')
-rw-r--r--src/drivers/net/intelx.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/drivers/net/intelx.c b/src/drivers/net/intelx.c
index d2bb19b0..982b74f1 100644
--- a/src/drivers/net/intelx.c
+++ b/src/drivers/net/intelx.c
@@ -396,8 +396,10 @@ static int intelx_probe ( struct pci_device *pci ) {
netdev->dev = &pci->dev;
memset ( intel, 0, sizeof ( *intel ) );
intel->port = PCI_FUNC ( pci->busdevfn );
- intel_init_ring ( &intel->tx, INTEL_NUM_TX_DESC, INTELX_TD );
- intel_init_ring ( &intel->rx, INTEL_NUM_RX_DESC, INTELX_RD );
+ intel_init_ring ( &intel->tx, INTEL_NUM_TX_DESC, INTELX_TD,
+ intel_describe_tx );
+ intel_init_ring ( &intel->rx, INTEL_NUM_RX_DESC, INTELX_RD,
+ intel_describe_rx );
/* Fix up PCI device */
adjust_pci_device ( pci );