net: cadence_gem: Fix Tx descriptor update
The local variable "desc" was being used to read-modify-write the first descriptor (of a multi-desc packet) upon packet completion. desc however continues to be used by the code as the current descriptor. Give this first desc RMW it's own local variable to avoid trampling. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
		
							parent
							
								
									3334e929ae
								
							
						
					
					
						commit
						6ab57a6b80
					
				| 
						 | 
				
			
			@ -911,14 +911,16 @@ static void gem_transmit(GemState *s)
 | 
			
		|||
 | 
			
		||||
        /* 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,
 | 
			
		||||
                                     (uint8_t *)&desc[0], sizeof(desc));
 | 
			
		||||
            tx_desc_set_used(desc);
 | 
			
		||||
            cpu_physical_memory_write(s->tx_desc_addr,
 | 
			
		||||
                                      (uint8_t *)&desc[0], sizeof(desc));
 | 
			
		||||
            cpu_physical_memory_read(s->tx_desc_addr, (uint8_t *)desc_first,
 | 
			
		||||
                                     sizeof(desc_first));
 | 
			
		||||
            tx_desc_set_used(desc_first);
 | 
			
		||||
            cpu_physical_memory_write(s->tx_desc_addr, (uint8_t *)desc_first,
 | 
			
		||||
                                      sizeof(desc_first));
 | 
			
		||||
            /* Advance the hardare current descriptor past this packet */
 | 
			
		||||
            if (tx_desc_get_wrap(desc)) {
 | 
			
		||||
                s->tx_desc_addr = s->regs[GEM_TXQBASE];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue