|  | @@ -1018,7 +1018,7 @@ static int intelxl_context_rx ( struct intelxl_nic *intelxl,
 | 
		
	
		
			
			| 1018 | 1018 |  	base_count = INTELXL_CTX_RX_BASE_COUNT ( address, INTELXL_RX_NUM_DESC );
 | 
		
	
		
			
			| 1019 | 1019 |  	ctx.rx.base_count = cpu_to_le64 ( base_count );
 | 
		
	
		
			
			| 1020 | 1020 |  	ctx.rx.len = cpu_to_le16 ( INTELXL_CTX_RX_LEN ( intelxl->mfs ) );
 | 
		
	
		
			
			| 1021 |  | -	ctx.rx.flags = INTELXL_CTX_RX_FL_CRCSTRIP;
 | 
		
	
		
			
			|  | 1021 | +	ctx.rx.flags = ( INTELXL_CTX_RX_FL_DSIZE | INTELXL_CTX_RX_FL_CRCSTRIP );
 | 
		
	
		
			
			| 1022 | 1022 |  	ctx.rx.mfs = cpu_to_le16 ( INTELXL_CTX_RX_MFS ( intelxl->mfs ) );
 | 
		
	
		
			
			| 1023 | 1023 |  
 | 
		
	
		
			
			| 1024 | 1024 |  	/* Program context */
 | 
		
	
	
		
			
			|  | @@ -1101,20 +1101,20 @@ static int intelxl_create_ring ( struct intelxl_nic *intelxl,
 | 
		
	
		
			
			| 1101 | 1101 |  	int rc;
 | 
		
	
		
			
			| 1102 | 1102 |  
 | 
		
	
		
			
			| 1103 | 1103 |  	/* Allocate descriptor ring */
 | 
		
	
		
			
			| 1104 |  | -	ring->desc = malloc_dma ( ring->len, INTELXL_ALIGN );
 | 
		
	
		
			
			| 1105 |  | -	if ( ! ring->desc ) {
 | 
		
	
		
			
			|  | 1104 | +	ring->desc.raw = malloc_dma ( ring->len, INTELXL_ALIGN );
 | 
		
	
		
			
			|  | 1105 | +	if ( ! ring->desc.raw ) {
 | 
		
	
		
			
			| 1106 | 1106 |  		rc = -ENOMEM;
 | 
		
	
		
			
			| 1107 | 1107 |  		goto err_alloc;
 | 
		
	
		
			
			| 1108 | 1108 |  	}
 | 
		
	
		
			
			| 1109 | 1109 |  
 | 
		
	
		
			
			| 1110 | 1110 |  	/* Initialise descriptor ring */
 | 
		
	
		
			
			| 1111 |  | -	memset ( ring->desc, 0, ring->len );
 | 
		
	
		
			
			|  | 1111 | +	memset ( ring->desc.raw, 0, ring->len );
 | 
		
	
		
			
			| 1112 | 1112 |  
 | 
		
	
		
			
			| 1113 | 1113 |  	/* Reset tail pointer */
 | 
		
	
		
			
			| 1114 | 1114 |  	writel ( 0, ( ring_regs + INTELXL_QXX_TAIL ) );
 | 
		
	
		
			
			| 1115 | 1115 |  
 | 
		
	
		
			
			| 1116 | 1116 |  	/* Program queue context */
 | 
		
	
		
			
			| 1117 |  | -	address = virt_to_bus ( ring->desc );
 | 
		
	
		
			
			|  | 1117 | +	address = virt_to_bus ( ring->desc.raw );
 | 
		
	
		
			
			| 1118 | 1118 |  	if ( ( rc = ring->context ( intelxl, address ) ) != 0 )
 | 
		
	
		
			
			| 1119 | 1119 |  		goto err_context;
 | 
		
	
		
			
			| 1120 | 1120 |  
 | 
		
	
	
		
			
			|  | @@ -1135,7 +1135,7 @@ static int intelxl_create_ring ( struct intelxl_nic *intelxl,
 | 
		
	
		
			
			| 1135 | 1135 |  	intelxl_disable_ring ( intelxl, ring );
 | 
		
	
		
			
			| 1136 | 1136 |   err_enable:
 | 
		
	
		
			
			| 1137 | 1137 |   err_context:
 | 
		
	
		
			
			| 1138 |  | -	free_dma ( ring->desc, ring->len );
 | 
		
	
		
			
			|  | 1138 | +	free_dma ( ring->desc.raw, ring->len );
 | 
		
	
		
			
			| 1139 | 1139 |   err_alloc:
 | 
		
	
		
			
			| 1140 | 1140 |  	return rc;
 | 
		
	
		
			
			| 1141 | 1141 |  }
 | 
		
	
	
		
			
			|  | @@ -1157,8 +1157,8 @@ static void intelxl_destroy_ring ( struct intelxl_nic *intelxl,
 | 
		
	
		
			
			| 1157 | 1157 |  	}
 | 
		
	
		
			
			| 1158 | 1158 |  
 | 
		
	
		
			
			| 1159 | 1159 |  	/* Free descriptor ring */
 | 
		
	
		
			
			| 1160 |  | -	free_dma ( ring->desc, ring->len );
 | 
		
	
		
			
			| 1161 |  | -	ring->desc = NULL;
 | 
		
	
		
			
			|  | 1160 | +	free_dma ( ring->desc.raw, ring->len );
 | 
		
	
		
			
			|  | 1161 | +	ring->desc.raw = NULL;
 | 
		
	
		
			
			| 1162 | 1162 |  }
 | 
		
	
		
			
			| 1163 | 1163 |  
 | 
		
	
		
			
			| 1164 | 1164 |  /**
 | 
		
	
	
		
			
			|  | @@ -1186,7 +1186,7 @@ static void intelxl_refill_rx ( struct intelxl_nic *intelxl ) {
 | 
		
	
		
			
			| 1186 | 1186 |  
 | 
		
	
		
			
			| 1187 | 1187 |  		/* Get next receive descriptor */
 | 
		
	
		
			
			| 1188 | 1188 |  		rx_idx = ( intelxl->rx.prod++ % INTELXL_RX_NUM_DESC );
 | 
		
	
		
			
			| 1189 |  | -		rx = &intelxl->rx.desc[rx_idx].rx;
 | 
		
	
		
			
			|  | 1189 | +		rx = &intelxl->rx.desc.rx[rx_idx].data;
 | 
		
	
		
			
			| 1190 | 1190 |  
 | 
		
	
		
			
			| 1191 | 1191 |  		/* Populate receive descriptor */
 | 
		
	
		
			
			| 1192 | 1192 |  		address = virt_to_bus ( iobuf->data );
 | 
		
	
	
		
			
			|  | @@ -1351,7 +1351,7 @@ static int intelxl_transmit ( struct net_device *netdev,
 | 
		
	
		
			
			| 1351 | 1351 |  	}
 | 
		
	
		
			
			| 1352 | 1352 |  	tx_idx = ( intelxl->tx.prod++ % INTELXL_TX_NUM_DESC );
 | 
		
	
		
			
			| 1353 | 1353 |  	tx_tail = ( intelxl->tx.prod % INTELXL_TX_NUM_DESC );
 | 
		
	
		
			
			| 1354 |  | -	tx = &intelxl->tx.desc[tx_idx].tx;
 | 
		
	
		
			
			|  | 1354 | +	tx = &intelxl->tx.desc.tx[tx_idx].data;
 | 
		
	
		
			
			| 1355 | 1355 |  
 | 
		
	
		
			
			| 1356 | 1356 |  	/* Populate transmit descriptor */
 | 
		
	
		
			
			| 1357 | 1357 |  	address = virt_to_bus ( iobuf->data );
 | 
		
	
	
		
			
			|  | @@ -1387,7 +1387,7 @@ static void intelxl_poll_tx ( struct net_device *netdev ) {
 | 
		
	
		
			
			| 1387 | 1387 |  
 | 
		
	
		
			
			| 1388 | 1388 |  		/* Get next transmit descriptor */
 | 
		
	
		
			
			| 1389 | 1389 |  		tx_idx = ( intelxl->tx.cons % INTELXL_TX_NUM_DESC );
 | 
		
	
		
			
			| 1390 |  | -		tx_wb = &intelxl->tx.desc[tx_idx].tx_wb;
 | 
		
	
		
			
			|  | 1390 | +		tx_wb = &intelxl->tx.desc.tx[tx_idx].wb;
 | 
		
	
		
			
			| 1391 | 1391 |  
 | 
		
	
		
			
			| 1392 | 1392 |  		/* Stop if descriptor is still in use */
 | 
		
	
		
			
			| 1393 | 1393 |  		if ( ! ( tx_wb->flags & INTELXL_TX_WB_FL_DD ) )
 | 
		
	
	
		
			
			|  | @@ -1419,7 +1419,7 @@ static void intelxl_poll_rx ( struct net_device *netdev ) {
 | 
		
	
		
			
			| 1419 | 1419 |  
 | 
		
	
		
			
			| 1420 | 1420 |  		/* Get next receive descriptor */
 | 
		
	
		
			
			| 1421 | 1421 |  		rx_idx = ( intelxl->rx.cons % INTELXL_RX_NUM_DESC );
 | 
		
	
		
			
			| 1422 |  | -		rx_wb = &intelxl->rx.desc[rx_idx].rx_wb;
 | 
		
	
		
			
			|  | 1422 | +		rx_wb = &intelxl->rx.desc.rx[rx_idx].wb;
 | 
		
	
		
			
			| 1423 | 1423 |  
 | 
		
	
		
			
			| 1424 | 1424 |  		/* Stop if descriptor is still in use */
 | 
		
	
		
			
			| 1425 | 1425 |  		if ( ! ( rx_wb->flags & cpu_to_le32 ( INTELXL_RX_WB_FL_DD ) ) )
 | 
		
	
	
		
			
			|  | @@ -1544,8 +1544,10 @@ static int intelxl_probe ( struct pci_device *pci ) {
 | 
		
	
		
			
			| 1544 | 1544 |  	intelxl_init_admin ( &intelxl->event, INTELXL_ADMIN_EVT,
 | 
		
	
		
			
			| 1545 | 1545 |  			     &intelxl_admin_offsets );
 | 
		
	
		
			
			| 1546 | 1546 |  	intelxl_init_ring ( &intelxl->tx, INTELXL_TX_NUM_DESC,
 | 
		
	
		
			
			|  | 1547 | +			    sizeof ( intelxl->tx.desc.tx[0] ),
 | 
		
	
		
			
			| 1547 | 1548 |  			    intelxl_context_tx );
 | 
		
	
		
			
			| 1548 | 1549 |  	intelxl_init_ring ( &intelxl->rx, INTELXL_RX_NUM_DESC,
 | 
		
	
		
			
			|  | 1550 | +			    sizeof ( intelxl->rx.desc.rx[0] ),
 | 
		
	
		
			
			| 1549 | 1551 |  			    intelxl_context_rx );
 | 
		
	
		
			
			| 1550 | 1552 |  
 | 
		
	
		
			
			| 1551 | 1553 |  	/* Fix up PCI device */
 |