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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Peter Crosthwaite
						Peter Crosthwaite