net: move compute_mcast_idx() to net.h
Reduce duplicated codes. Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									afe0a59535
								
							
						
					
					
						commit
						7fc8d918b9
					
				| @ -322,33 +322,8 @@ static const uint16_t eepro100_mdi_mask[] = { | ||||
|     0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||||
| }; | ||||
| 
 | ||||
| #define POLYNOMIAL 0x04c11db6 | ||||
| 
 | ||||
| static E100PCIDeviceInfo *eepro100_get_class(EEPRO100State *s); | ||||
| 
 | ||||
| /* From FreeBSD */ | ||||
| /* XXX: optimize */ | ||||
| static unsigned compute_mcast_idx(const uint8_t * ep) | ||||
| { | ||||
|     uint32_t crc; | ||||
|     int carry, i, j; | ||||
|     uint8_t b; | ||||
| 
 | ||||
|     crc = 0xffffffff; | ||||
|     for (i = 0; i < 6; i++) { | ||||
|         b = *ep++; | ||||
|         for (j = 0; j < 8; j++) { | ||||
|             carry = ((crc & 0x80000000L) ? 1 : 0) ^ (b & 0x01); | ||||
|             crc <<= 1; | ||||
|             b >>= 1; | ||||
|             if (carry) { | ||||
|                 crc = ((crc ^ POLYNOMIAL) | carry); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return (crc & BITS(7, 2)) >> 2; | ||||
| } | ||||
| 
 | ||||
| /* Read a 16 bit control/status (CSR) register. */ | ||||
| static uint16_t e100_read_reg2(EEPRO100State *s, E100RegisterOffset addr) | ||||
| { | ||||
|  | ||||
							
								
								
									
										24
									
								
								hw/ne2000.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								hw/ne2000.c
									
									
									
									
									
								
							| @ -150,30 +150,6 @@ static void ne2000_update_irq(NE2000State *s) | ||||
|     qemu_set_irq(s->irq, (isr != 0)); | ||||
| } | ||||
| 
 | ||||
| #define POLYNOMIAL 0x04c11db6 | ||||
| 
 | ||||
| /* From FreeBSD */ | ||||
| /* XXX: optimize */ | ||||
| static int compute_mcast_idx(const uint8_t *ep) | ||||
| { | ||||
|     uint32_t crc; | ||||
|     int carry, i, j; | ||||
|     uint8_t b; | ||||
| 
 | ||||
|     crc = 0xffffffff; | ||||
|     for (i = 0; i < 6; i++) { | ||||
|         b = *ep++; | ||||
|         for (j = 0; j < 8; j++) { | ||||
|             carry = ((crc & 0x80000000L) ? 1 : 0) ^ (b & 0x01); | ||||
|             crc <<= 1; | ||||
|             b >>= 1; | ||||
|             if (carry) | ||||
|                 crc = ((crc ^ POLYNOMIAL) | carry); | ||||
|         } | ||||
|     } | ||||
|     return (crc >> 26); | ||||
| } | ||||
| 
 | ||||
| static int ne2000_buffer_full(NE2000State *s) | ||||
| { | ||||
|     int avail, index, boundary; | ||||
|  | ||||
| @ -351,31 +351,6 @@ static int open_eth_can_receive(VLANClientState *nc) | ||||
|         (rx_desc(s)->len_flags & RXD_E); | ||||
| } | ||||
| 
 | ||||
| #define POLYNOMIAL 0x04c11db6 | ||||
| 
 | ||||
| /* From FreeBSD */ | ||||
| /* XXX: optimize */ | ||||
| static unsigned compute_mcast_idx(const uint8_t *ep) | ||||
| { | ||||
|     uint32_t crc; | ||||
|     int carry, i, j; | ||||
|     uint8_t b; | ||||
| 
 | ||||
|     crc = 0xffffffff; | ||||
|     for (i = 0; i < 6; i++) { | ||||
|         b = *ep++; | ||||
|         for (j = 0; j < 8; j++) { | ||||
|             carry = ((crc & 0x80000000L) ? 1 : 0) ^ (b & 0x01); | ||||
|             crc <<= 1; | ||||
|             b >>= 1; | ||||
|             if (carry) { | ||||
|                 crc = ((crc ^ POLYNOMIAL) | carry); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return crc >> 26; | ||||
| } | ||||
| 
 | ||||
| static ssize_t open_eth_receive(VLANClientState *nc, | ||||
|         const uint8_t *buf, size_t size) | ||||
| { | ||||
|  | ||||
							
								
								
									
										24
									
								
								hw/rtl8139.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								hw/rtl8139.c
									
									
									
									
									
								
							| @ -708,30 +708,6 @@ static void rtl8139_update_irq(RTL8139State *s) | ||||
|     qemu_set_irq(s->dev.irq[0], (isr != 0)); | ||||
| } | ||||
| 
 | ||||
| #define POLYNOMIAL 0x04c11db6 | ||||
| 
 | ||||
| /* From FreeBSD */ | ||||
| /* XXX: optimize */ | ||||
| static int compute_mcast_idx(const uint8_t *ep) | ||||
| { | ||||
|     uint32_t crc; | ||||
|     int carry, i, j; | ||||
|     uint8_t b; | ||||
| 
 | ||||
|     crc = 0xffffffff; | ||||
|     for (i = 0; i < 6; i++) { | ||||
|         b = *ep++; | ||||
|         for (j = 0; j < 8; j++) { | ||||
|             carry = ((crc & 0x80000000L) ? 1 : 0) ^ (b & 0x01); | ||||
|             crc <<= 1; | ||||
|             b >>= 1; | ||||
|             if (carry) | ||||
|                 crc = ((crc ^ POLYNOMIAL) | carry); | ||||
|         } | ||||
|     } | ||||
|     return (crc >> 26); | ||||
| } | ||||
| 
 | ||||
| static int rtl8139_RxWrap(RTL8139State *s) | ||||
| { | ||||
|     /* wrapping enabled; assume 1.5k more buffer space if size < 65536 */ | ||||
|  | ||||
							
								
								
									
										23
									
								
								net.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								net.c
									
									
									
									
									
								
							| @ -1475,3 +1475,26 @@ int net_client_parse(QemuOptsList *opts_list, const char *optarg) | ||||
|     default_net = 0; | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| /* From FreeBSD */ | ||||
| /* XXX: optimize */ | ||||
| unsigned compute_mcast_idx(const uint8_t *ep) | ||||
| { | ||||
|     uint32_t crc; | ||||
|     int carry, i, j; | ||||
|     uint8_t b; | ||||
| 
 | ||||
|     crc = 0xffffffff; | ||||
|     for (i = 0; i < 6; i++) { | ||||
|         b = *ep++; | ||||
|         for (j = 0; j < 8; j++) { | ||||
|             carry = ((crc & 0x80000000L) ? 1 : 0) ^ (b & 0x01); | ||||
|             crc <<= 1; | ||||
|             b >>= 1; | ||||
|             if (carry) { | ||||
|                 crc = ((crc ^ POLYNOMIAL) | carry); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return crc >> 26; | ||||
| } | ||||
|  | ||||
							
								
								
									
										3
									
								
								net.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								net.h
									
									
									
									
									
								
							| @ -182,6 +182,9 @@ void qdev_set_nic_properties(DeviceState *dev, NICInfo *nd); | ||||
| 
 | ||||
| int net_handle_fd_param(Monitor *mon, const char *param); | ||||
| 
 | ||||
| #define POLYNOMIAL 0x04c11db6 | ||||
| unsigned compute_mcast_idx(const uint8_t *ep); | ||||
| 
 | ||||
| #define vmstate_offset_macaddr(_state, _field)                       \ | ||||
|     vmstate_offset_array(_state, _field.a, uint8_t,                \ | ||||
|                          sizeof(typeof_field(_state, _field))) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jason Wang
						Jason Wang