mirror of https://github.com/xqemu/xqemu.git
cadence_gem: Correct indentation
Fix up the indentation inside the for loop that was introduced in the previous patch. This commit is almost empty if viewed using 'git show -w', except for a few changes that were required to avoid the 80 charecter line limit. Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: b40d1b12d24be9f0ac5d72f86249103e0c1c720a.1469727764.git.alistair.francis@xilinx.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
6710172501
commit
77524d1157
|
@ -1054,117 +1054,122 @@ static void gem_transmit(CadenceGEMState *s)
|
||||||
total_bytes = 0;
|
total_bytes = 0;
|
||||||
|
|
||||||
for (q = s->num_priority_queues - 1; q >= 0; q--) {
|
for (q = s->num_priority_queues - 1; q >= 0; q--) {
|
||||||
/* read current descriptor */
|
/* read current descriptor */
|
||||||
packet_desc_addr = s->tx_desc_addr[q];
|
packet_desc_addr = s->tx_desc_addr[q];
|
||||||
|
|
||||||
DB_PRINT("read descriptor 0x%" HWADDR_PRIx "\n", packet_desc_addr);
|
|
||||||
cpu_physical_memory_read(packet_desc_addr,
|
|
||||||
(uint8_t *)desc, sizeof(desc));
|
|
||||||
/* Handle all descriptors owned by hardware */
|
|
||||||
while (tx_desc_get_used(desc) == 0) {
|
|
||||||
|
|
||||||
/* Do nothing if transmit is not enabled. */
|
|
||||||
if (!(s->regs[GEM_NWCTRL] & GEM_NWCTRL_TXENA)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
print_gem_tx_desc(desc, q);
|
|
||||||
|
|
||||||
/* The real hardware would eat this (and possibly crash).
|
|
||||||
* For QEMU let's lend a helping hand.
|
|
||||||
*/
|
|
||||||
if ((tx_desc_get_buffer(desc) == 0) ||
|
|
||||||
(tx_desc_get_length(desc) == 0)) {
|
|
||||||
DB_PRINT("Invalid TX descriptor @ 0x%x\n",
|
|
||||||
(unsigned)packet_desc_addr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tx_desc_get_length(desc) > sizeof(tx_packet) - (p - tx_packet)) {
|
|
||||||
DB_PRINT("TX descriptor @ 0x%x too large: size 0x%x space 0x%x\n",
|
|
||||||
(unsigned)packet_desc_addr,
|
|
||||||
(unsigned)tx_desc_get_length(desc),
|
|
||||||
sizeof(tx_packet) - (p - tx_packet));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Gather this fragment of the packet from "dma memory" to our contig.
|
|
||||||
* buffer.
|
|
||||||
*/
|
|
||||||
cpu_physical_memory_read(tx_desc_get_buffer(desc), p,
|
|
||||||
tx_desc_get_length(desc));
|
|
||||||
p += tx_desc_get_length(desc);
|
|
||||||
total_bytes += tx_desc_get_length(desc);
|
|
||||||
|
|
||||||
/* Last descriptor for this packet; hand the whole thing off */
|
|
||||||
if (tx_desc_get_last(desc)) {
|
|
||||||
unsigned desc_first[2];
|
|
||||||
|
|
||||||
/* Modify the 1st descriptor of this packet to be owned by
|
|
||||||
* the processor.
|
|
||||||
*/
|
|
||||||
cpu_physical_memory_read(s->tx_desc_addr[q], (uint8_t *)desc_first,
|
|
||||||
sizeof(desc_first));
|
|
||||||
tx_desc_set_used(desc_first);
|
|
||||||
cpu_physical_memory_write(s->tx_desc_addr[q], (uint8_t *)desc_first,
|
|
||||||
sizeof(desc_first));
|
|
||||||
/* Advance the hardware current descriptor past this packet */
|
|
||||||
if (tx_desc_get_wrap(desc)) {
|
|
||||||
s->tx_desc_addr[q] = s->regs[GEM_TXQBASE];
|
|
||||||
} else {
|
|
||||||
s->tx_desc_addr[q] = packet_desc_addr + 8;
|
|
||||||
}
|
|
||||||
DB_PRINT("TX descriptor next: 0x%08x\n", s->tx_desc_addr[q]);
|
|
||||||
|
|
||||||
s->regs[GEM_TXSTATUS] |= GEM_TXSTATUS_TXCMPL;
|
|
||||||
s->regs[GEM_ISR] |= GEM_INT_TXCMPL & ~(s->regs[GEM_IMR]);
|
|
||||||
|
|
||||||
/* Update queue interrupt status */
|
|
||||||
if (s->num_priority_queues > 1) {
|
|
||||||
s->regs[GEM_INT_Q1_STATUS + q] |=
|
|
||||||
GEM_INT_TXCMPL & ~(s->regs[GEM_INT_Q1_MASK + q]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle interrupt consequences */
|
|
||||||
gem_update_int_status(s);
|
|
||||||
|
|
||||||
/* Is checksum offload enabled? */
|
|
||||||
if (s->regs[GEM_DMACFG] & GEM_DMACFG_TXCSUM_OFFL) {
|
|
||||||
net_checksum_calculate(tx_packet, total_bytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Update MAC statistics */
|
|
||||||
gem_transmit_updatestats(s, tx_packet, total_bytes);
|
|
||||||
|
|
||||||
/* Send the packet somewhere */
|
|
||||||
if (s->phy_loop || (s->regs[GEM_NWCTRL] & GEM_NWCTRL_LOCALLOOP)) {
|
|
||||||
gem_receive(qemu_get_queue(s->nic), tx_packet, total_bytes);
|
|
||||||
} else {
|
|
||||||
qemu_send_packet(qemu_get_queue(s->nic), tx_packet,
|
|
||||||
total_bytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Prepare for next packet */
|
|
||||||
p = tx_packet;
|
|
||||||
total_bytes = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* read next descriptor */
|
|
||||||
if (tx_desc_get_wrap(desc)) {
|
|
||||||
tx_desc_set_last(desc);
|
|
||||||
packet_desc_addr = s->regs[GEM_TXQBASE];
|
|
||||||
} else {
|
|
||||||
packet_desc_addr += 8;
|
|
||||||
}
|
|
||||||
DB_PRINT("read descriptor 0x%" HWADDR_PRIx "\n", packet_desc_addr);
|
DB_PRINT("read descriptor 0x%" HWADDR_PRIx "\n", packet_desc_addr);
|
||||||
cpu_physical_memory_read(packet_desc_addr,
|
cpu_physical_memory_read(packet_desc_addr,
|
||||||
(uint8_t *)desc, sizeof(desc));
|
(uint8_t *)desc, sizeof(desc));
|
||||||
}
|
/* Handle all descriptors owned by hardware */
|
||||||
|
while (tx_desc_get_used(desc) == 0) {
|
||||||
|
|
||||||
if (tx_desc_get_used(desc)) {
|
/* Do nothing if transmit is not enabled. */
|
||||||
s->regs[GEM_TXSTATUS] |= GEM_TXSTATUS_USED;
|
if (!(s->regs[GEM_NWCTRL] & GEM_NWCTRL_TXENA)) {
|
||||||
s->regs[GEM_ISR] |= GEM_INT_TXUSED & ~(s->regs[GEM_IMR]);
|
return;
|
||||||
gem_update_int_status(s);
|
}
|
||||||
}
|
print_gem_tx_desc(desc, q);
|
||||||
|
|
||||||
|
/* The real hardware would eat this (and possibly crash).
|
||||||
|
* For QEMU let's lend a helping hand.
|
||||||
|
*/
|
||||||
|
if ((tx_desc_get_buffer(desc) == 0) ||
|
||||||
|
(tx_desc_get_length(desc) == 0)) {
|
||||||
|
DB_PRINT("Invalid TX descriptor @ 0x%x\n",
|
||||||
|
(unsigned)packet_desc_addr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tx_desc_get_length(desc) > sizeof(tx_packet) -
|
||||||
|
(p - tx_packet)) {
|
||||||
|
DB_PRINT("TX descriptor @ 0x%x too large: size 0x%x space " \
|
||||||
|
"0x%x\n", (unsigned)packet_desc_addr,
|
||||||
|
(unsigned)tx_desc_get_length(desc),
|
||||||
|
sizeof(tx_packet) - (p - tx_packet));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Gather this fragment of the packet from "dma memory" to our
|
||||||
|
* contig buffer.
|
||||||
|
*/
|
||||||
|
cpu_physical_memory_read(tx_desc_get_buffer(desc), p,
|
||||||
|
tx_desc_get_length(desc));
|
||||||
|
p += tx_desc_get_length(desc);
|
||||||
|
total_bytes += tx_desc_get_length(desc);
|
||||||
|
|
||||||
|
/* Last descriptor for this packet; hand the whole thing off */
|
||||||
|
if (tx_desc_get_last(desc)) {
|
||||||
|
unsigned desc_first[2];
|
||||||
|
|
||||||
|
/* Modify the 1st descriptor of this packet to be owned by
|
||||||
|
* the processor.
|
||||||
|
*/
|
||||||
|
cpu_physical_memory_read(s->tx_desc_addr[q],
|
||||||
|
(uint8_t *)desc_first,
|
||||||
|
sizeof(desc_first));
|
||||||
|
tx_desc_set_used(desc_first);
|
||||||
|
cpu_physical_memory_write(s->tx_desc_addr[q],
|
||||||
|
(uint8_t *)desc_first,
|
||||||
|
sizeof(desc_first));
|
||||||
|
/* Advance the hardware current descriptor past this packet */
|
||||||
|
if (tx_desc_get_wrap(desc)) {
|
||||||
|
s->tx_desc_addr[q] = s->regs[GEM_TXQBASE];
|
||||||
|
} else {
|
||||||
|
s->tx_desc_addr[q] = packet_desc_addr + 8;
|
||||||
|
}
|
||||||
|
DB_PRINT("TX descriptor next: 0x%08x\n", s->tx_desc_addr[q]);
|
||||||
|
|
||||||
|
s->regs[GEM_TXSTATUS] |= GEM_TXSTATUS_TXCMPL;
|
||||||
|
s->regs[GEM_ISR] |= GEM_INT_TXCMPL & ~(s->regs[GEM_IMR]);
|
||||||
|
|
||||||
|
/* Update queue interrupt status */
|
||||||
|
if (s->num_priority_queues > 1) {
|
||||||
|
s->regs[GEM_INT_Q1_STATUS + q] |=
|
||||||
|
GEM_INT_TXCMPL & ~(s->regs[GEM_INT_Q1_MASK + q]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Handle interrupt consequences */
|
||||||
|
gem_update_int_status(s);
|
||||||
|
|
||||||
|
/* Is checksum offload enabled? */
|
||||||
|
if (s->regs[GEM_DMACFG] & GEM_DMACFG_TXCSUM_OFFL) {
|
||||||
|
net_checksum_calculate(tx_packet, total_bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Update MAC statistics */
|
||||||
|
gem_transmit_updatestats(s, tx_packet, total_bytes);
|
||||||
|
|
||||||
|
/* Send the packet somewhere */
|
||||||
|
if (s->phy_loop || (s->regs[GEM_NWCTRL] &
|
||||||
|
GEM_NWCTRL_LOCALLOOP)) {
|
||||||
|
gem_receive(qemu_get_queue(s->nic), tx_packet,
|
||||||
|
total_bytes);
|
||||||
|
} else {
|
||||||
|
qemu_send_packet(qemu_get_queue(s->nic), tx_packet,
|
||||||
|
total_bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Prepare for next packet */
|
||||||
|
p = tx_packet;
|
||||||
|
total_bytes = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read next descriptor */
|
||||||
|
if (tx_desc_get_wrap(desc)) {
|
||||||
|
tx_desc_set_last(desc);
|
||||||
|
packet_desc_addr = s->regs[GEM_TXQBASE];
|
||||||
|
} else {
|
||||||
|
packet_desc_addr += 8;
|
||||||
|
}
|
||||||
|
DB_PRINT("read descriptor 0x%" HWADDR_PRIx "\n", packet_desc_addr);
|
||||||
|
cpu_physical_memory_read(packet_desc_addr,
|
||||||
|
(uint8_t *)desc, sizeof(desc));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tx_desc_get_used(desc)) {
|
||||||
|
s->regs[GEM_TXSTATUS] |= GEM_TXSTATUS_USED;
|
||||||
|
s->regs[GEM_ISR] |= GEM_INT_TXUSED & ~(s->regs[GEM_IMR]);
|
||||||
|
gem_update_int_status(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue