* [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID
@ 2017-11-07 18:35 Mike Nawrocki
2017-11-07 18:35 ` [Qemu-devel] [PATCH v3 1/2] Fix eepro100 simple transmission mode Mike Nawrocki
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Mike Nawrocki @ 2017-11-07 18:35 UTC (permalink / raw)
To: qemu-devel; +Cc: mst, jasowang, marcel, Mike Nawrocki
This patch set does two things. First, it fixes the simple transmission mode
for the eepro100 chipset. Second, it adds the PCI device ID 0x1030 for the
i82559a chipset. This ID is set as the "alternate" PCI device ID for that
chipset, and is selected by default using the new "x-use-alternate-device-id"
property. This property is set to the compat value of false in
"hw/include/compat.h"
Mike Nawrocki (2):
Fix eepro100 simple transmission mode
Add new PCI ID for i82559a
hw/net/eepro100.c | 31 ++++++++++++++++---------------
include/hw/compat.h | 4 ++++
include/hw/pci/pci.h | 1 +
qemu-options.hx | 2 +-
4 files changed, 22 insertions(+), 16 deletions(-)
--
2.14.2
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH v3 1/2] Fix eepro100 simple transmission mode
2017-11-07 18:35 [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID Mike Nawrocki
@ 2017-11-07 18:35 ` Mike Nawrocki
2017-11-07 18:35 ` [Qemu-devel] [PATCH v3 2/2] Add new PCI ID for i82559a Mike Nawrocki
2017-11-07 18:54 ` [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID Michael S. Tsirkin
2 siblings, 0 replies; 4+ messages in thread
From: Mike Nawrocki @ 2017-11-07 18:35 UTC (permalink / raw)
To: qemu-devel; +Cc: mst, jasowang, marcel, Mike Nawrocki
The simple transmission mode was treating the area immediately after the
transmit command block (TCB) as if it were a transmit buffer descriptor,
when in reality it is simply the packet data. This change simply copies
the data following the TCB into the packet buffer.
Signed-off-by: Mike Nawrocki <michael.nawrocki@gtri.gatech.edu>
---
hw/net/eepro100.c | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index 80b8f47c4b..91dd058010 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -774,23 +774,11 @@ static void tx_command(EEPRO100State *s)
}
assert(tcb_bytes <= sizeof(buf));
while (size < tcb_bytes) {
- uint32_t tx_buffer_address = ldl_le_pci_dma(&s->dev, tbd_address);
- uint16_t tx_buffer_size = lduw_le_pci_dma(&s->dev, tbd_address + 4);
-#if 0
- uint16_t tx_buffer_el = lduw_le_pci_dma(&s->dev, tbd_address + 6);
-#endif
- if (tx_buffer_size == 0) {
- /* Prevent an endless loop. */
- logout("loop in %s:%u\n", __FILE__, __LINE__);
- break;
- }
- tbd_address += 8;
TRACE(RXTX, logout
("TBD (simplified mode): buffer address 0x%08x, size 0x%04x\n",
- tx_buffer_address, tx_buffer_size));
- tx_buffer_size = MIN(tx_buffer_size, sizeof(buf) - size);
- pci_dma_read(&s->dev, tx_buffer_address, &buf[size], tx_buffer_size);
- size += tx_buffer_size;
+ tbd_address, tcb_bytes));
+ pci_dma_read(&s->dev, tbd_address, &buf[size], tcb_bytes);
+ size += tcb_bytes;
}
if (tbd_array == 0xffffffff) {
/* Simplified mode. Was already handled by code above. */
--
2.14.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH v3 2/2] Add new PCI ID for i82559a
2017-11-07 18:35 [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID Mike Nawrocki
2017-11-07 18:35 ` [Qemu-devel] [PATCH v3 1/2] Fix eepro100 simple transmission mode Mike Nawrocki
@ 2017-11-07 18:35 ` Mike Nawrocki
2017-11-07 18:54 ` [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID Michael S. Tsirkin
2 siblings, 0 replies; 4+ messages in thread
From: Mike Nawrocki @ 2017-11-07 18:35 UTC (permalink / raw)
To: qemu-devel; +Cc: mst, jasowang, marcel, Mike Nawrocki
Adds a new PCI ID for the i82559a (0x8086 0x1030) interface. The
"x-use-alt-device-id" property controls whether this new ID is to be
used, and is true by default, and set to false in a compat entry.
Signed-off-by: Mike Nawrocki <michael.nawrocki@gtri.gatech.edu>
---
hw/net/eepro100.c | 13 +++++++++++++
include/hw/compat.h | 4 ++++
include/hw/pci/pci.h | 1 +
qemu-options.hx | 2 +-
4 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c
index 91dd058010..a63ed2ca3b 100644
--- a/hw/net/eepro100.c
+++ b/hw/net/eepro100.c
@@ -132,6 +132,7 @@ typedef struct {
const char *name;
const char *desc;
uint16_t device_id;
+ uint16_t alt_device_id;
uint8_t revision;
uint16_t subsystem_vendor_id;
uint16_t subsystem_id;
@@ -276,6 +277,7 @@ typedef struct {
/* Quasi static device properties (no need to save them). */
uint16_t stats_size;
bool has_extended_tcb_support;
+ bool use_alt_device_id;
} EEPRO100State;
/* Word indices in EEPROM. */
@@ -1855,6 +1857,14 @@ static void e100_nic_realize(PCIDevice *pci_dev, Error **errp)
TRACE(OTHER, logout("\n"));
+ /* By default, the i82559a adapter uses the legacy PCI ID (for the
+ * i82557). This allows the PCI ID to be changed to the alternate
+ * i82559 ID if needed.
+ */
+ if (s->use_alt_device_id && strcmp(info->name, "i82559a") == 0) {
+ pci_config_set_device_id(s->dev.config, info->alt_device_id);
+ }
+
s->device = info->device;
e100_pci_reset(s, &local_err);
@@ -1974,6 +1984,7 @@ static E100PCIDeviceInfo e100_devices[] = {
.desc = "Intel i82559A Ethernet",
.device = i82559A,
.device_id = PCI_DEVICE_ID_INTEL_82557,
+ .alt_device_id = PCI_DEVICE_ID_INTEL_82559,
.revision = 0x06,
.stats_size = 80,
.has_extended_tcb_support = true,
@@ -2067,6 +2078,8 @@ static E100PCIDeviceInfo *eepro100_get_class(EEPRO100State *s)
static Property e100_properties[] = {
DEFINE_NIC_PROPERTIES(EEPRO100State, conf),
+ DEFINE_PROP_BOOL("x-use-alt-device-id", EEPRO100State, use_alt_device_id,
+ true),
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/include/hw/compat.h b/include/hw/compat.h
index cf389b4e85..f96212c49c 100644
--- a/include/hw/compat.h
+++ b/include/hw/compat.h
@@ -10,6 +10,10 @@
.driver = "virtio-tablet-device",\
.property = "wheel-axis",\
.value = "false",\
+ },{\
+ .driver = "i82559a",\
+ .property = "x-use-alt-device-id",\
+ .value = "false",\
},
#define HW_COMPAT_2_9 \
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index 8d02a0a383..f30e2cfb72 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -70,6 +70,7 @@ extern bool pci_available;
/* Intel (0x8086) */
#define PCI_DEVICE_ID_INTEL_82551IT 0x1209
#define PCI_DEVICE_ID_INTEL_82557 0x1229
+#define PCI_DEVICE_ID_INTEL_82559 0x1030
#define PCI_DEVICE_ID_INTEL_82801IR 0x2922
/* Red Hat / Qumranet (for QEMU) -- see pci-ids.txt */
diff --git a/qemu-options.hx b/qemu-options.hx
index 3728e9b4dd..a39c7e44b3 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2047,7 +2047,7 @@ that the card should have; this option currently only affects virtio cards; set
@var{v} = 0 to disable MSI-X. If no @option{-net} option is specified, a single
NIC is created. QEMU can emulate several different models of network card.
Valid values for @var{type} are
-@code{virtio}, @code{i82551}, @code{i82557b}, @code{i82559er},
+@code{virtio}, @code{i82551}, @code{i82557b}, @code{i82559a}, @code{i82559er},
@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
@code{e1000}, @code{smc91c111}, @code{lance} and @code{mcf_fec}.
Not all devices are supported on all targets. Use @code{-net nic,model=help}
--
2.14.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID
2017-11-07 18:35 [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID Mike Nawrocki
2017-11-07 18:35 ` [Qemu-devel] [PATCH v3 1/2] Fix eepro100 simple transmission mode Mike Nawrocki
2017-11-07 18:35 ` [Qemu-devel] [PATCH v3 2/2] Add new PCI ID for i82559a Mike Nawrocki
@ 2017-11-07 18:54 ` Michael S. Tsirkin
2 siblings, 0 replies; 4+ messages in thread
From: Michael S. Tsirkin @ 2017-11-07 18:54 UTC (permalink / raw)
To: Mike Nawrocki; +Cc: qemu-devel, jasowang, marcel
On Tue, Nov 07, 2017 at 01:35:01PM -0500, Mike Nawrocki wrote:
> This patch set does two things. First, it fixes the simple transmission mode
> for the eepro100 chipset. Second, it adds the PCI device ID 0x1030 for the
> i82559a chipset. This ID is set as the "alternate" PCI device ID for that
> chipset, and is selected by default using the new "x-use-alternate-device-id"
> property. This property is set to the compat value of false in
> "hw/include/compat.h"
>
> Mike Nawrocki (2):
> Fix eepro100 simple transmission mode
> Add new PCI ID for i82559a
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Jason, pls feel free to merge.
> hw/net/eepro100.c | 31 ++++++++++++++++---------------
> include/hw/compat.h | 4 ++++
> include/hw/pci/pci.h | 1 +
> qemu-options.hx | 2 +-
> 4 files changed, 22 insertions(+), 16 deletions(-)
>
> --
> 2.14.2
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-11-07 18:54 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-07 18:35 [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID Mike Nawrocki
2017-11-07 18:35 ` [Qemu-devel] [PATCH v3 1/2] Fix eepro100 simple transmission mode Mike Nawrocki
2017-11-07 18:35 ` [Qemu-devel] [PATCH v3 2/2] Add new PCI ID for i82559a Mike Nawrocki
2017-11-07 18:54 ` [Qemu-devel] [PATCH v3 0/2] Fix eepro100 simple transmission, add i82559 PCI ID Michael S. Tsirkin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).