net/cadence_gem: Fix small packet FCS stripping
The minimum packet size is 64, however this is before FCS stripping occurs. So when FCS stripping the minimum packet size is 60. Fix. Reported-by: Deepika Dhamija <deepika@xilinx.com> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Message-id: 8aac5bd737f9cf48b87f32943d7eb5939061e546.1386136219.git.peter.crosthwaite@xilinx.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									3057069802
								
							
						
					
					
						commit
						191946c51f
					
				| 
						 | 
				
			
			@ -687,6 +687,14 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
 | 
			
		|||
                 GEM_DMACFG_RBUFSZ_S) * GEM_DMACFG_RBUFSZ_MUL;
 | 
			
		||||
    bytes_to_copy = size;
 | 
			
		||||
 | 
			
		||||
    /* Pad to minimum length. Assume FCS field is stripped, logic
 | 
			
		||||
     * below will increment it to the real minimum of 64 when
 | 
			
		||||
     * not FCS stripping
 | 
			
		||||
     */
 | 
			
		||||
    if (size < 60) {
 | 
			
		||||
        size = 60;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Strip of FCS field ? (usually yes) */
 | 
			
		||||
    if (s->regs[GEM_NWCFG] & GEM_NWCFG_STRIP_FCS) {
 | 
			
		||||
        rxbuf_ptr = (void *)buf;
 | 
			
		||||
| 
						 | 
				
			
			@ -713,11 +721,6 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
 | 
			
		|||
        size += 4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Pad to minimum length */
 | 
			
		||||
    if (size < 64) {
 | 
			
		||||
        size = 64;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    DB_PRINT("config bufsize: %d packet size: %ld\n", rxbufsize, size);
 | 
			
		||||
 | 
			
		||||
    while (bytes_to_copy) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue