Commit 9bd0d294015e101b845b8af4c274bfe051996ef5

Authored by blueswir1
1 parent b305b5ba

PCnet: Allow more then two TMDs (Jan Kiszka)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4225 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 6 additions and 7 deletions
hw/pcnet.c
@@ -1249,15 +1249,14 @@ static void pcnet_transmit(PCNetState *s) @@ -1249,15 +1249,14 @@ static void pcnet_transmit(PCNetState *s)
1249 #endif 1249 #endif
1250 if (GET_FIELD(tmd.status, TMDS, STP)) { 1250 if (GET_FIELD(tmd.status, TMDS, STP)) {
1251 s->xmit_pos = 0; 1251 s->xmit_pos = 0;
1252 - if (!GET_FIELD(tmd.status, TMDS, ENP)) {  
1253 - int bcnt = 4096 - GET_FIELD(tmd.length, TMDL, BCNT);  
1254 - s->phys_mem_read(s->dma_opaque, PHYSADDR(s, tmd.tbadr),  
1255 - s->buffer, bcnt, CSR_BSWP(s));  
1256 - s->xmit_pos += bcnt;  
1257 - }  
1258 xmit_cxda = PHYSADDR(s,CSR_CXDA(s)); 1252 xmit_cxda = PHYSADDR(s,CSR_CXDA(s));
1259 } 1253 }
1260 - if (GET_FIELD(tmd.status, TMDS, ENP) && (s->xmit_pos >= 0)) { 1254 + if (!GET_FIELD(tmd.status, TMDS, ENP)) {
  1255 + int bcnt = 4096 - GET_FIELD(tmd.length, TMDL, BCNT);
  1256 + s->phys_mem_read(s->dma_opaque, PHYSADDR(s, tmd.tbadr),
  1257 + s->buffer + s->xmit_pos, bcnt, CSR_BSWP(s));
  1258 + s->xmit_pos += bcnt;
  1259 + } else if (s->xmit_pos >= 0) {
1261 int bcnt = 4096 - GET_FIELD(tmd.length, TMDL, BCNT); 1260 int bcnt = 4096 - GET_FIELD(tmd.length, TMDL, BCNT);
1262 s->phys_mem_read(s->dma_opaque, PHYSADDR(s, tmd.tbadr), 1261 s->phys_mem_read(s->dma_opaque, PHYSADDR(s, tmd.tbadr),
1263 s->buffer + s->xmit_pos, bcnt, CSR_BSWP(s)); 1262 s->buffer + s->xmit_pos, bcnt, CSR_BSWP(s));