@ -1441,6 +1441,7 @@ static void vmxnet3_activate_device(VMXNET3State *s)
vmxnet3_setup_rx_filtering ( s ) ;
vmxnet3_setup_rx_filtering ( s ) ;
/* Cache fields from shared memory */
/* Cache fields from shared memory */
s - > mtu = VMXNET3_READ_DRV_SHARED32 ( d , s - > drv_shmem , devRead . misc . mtu ) ;
s - > mtu = VMXNET3_READ_DRV_SHARED32 ( d , s - > drv_shmem , devRead . misc . mtu ) ;
assert ( VMXNET3_MIN_MTU < = s - > mtu & & s - > mtu < VMXNET3_MAX_MTU ) ;
VMW_CFPRN ( " MTU is %u " , s - > mtu ) ;
VMW_CFPRN ( " MTU is %u " , s - > mtu ) ;
s - > max_rx_frags =
s - > max_rx_frags =
@ -1486,6 +1487,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
/* Read rings memory locations for TX queues */
/* Read rings memory locations for TX queues */
pa = VMXNET3_READ_TX_QUEUE_DESCR64 ( d , qdescr_pa , conf . txRingBasePA ) ;
pa = VMXNET3_READ_TX_QUEUE_DESCR64 ( d , qdescr_pa , conf . txRingBasePA ) ;
size = VMXNET3_READ_TX_QUEUE_DESCR32 ( d , qdescr_pa , conf . txRingSize ) ;
size = VMXNET3_READ_TX_QUEUE_DESCR32 ( d , qdescr_pa , conf . txRingSize ) ;
if ( size > VMXNET3_TX_RING_MAX_SIZE ) {
size = VMXNET3_TX_RING_MAX_SIZE ;
}
vmxnet3_ring_init ( d , & s - > txq_descr [ i ] . tx_ring , pa , size ,
vmxnet3_ring_init ( d , & s - > txq_descr [ i ] . tx_ring , pa , size ,
sizeof ( struct Vmxnet3_TxDesc ) , false ) ;
sizeof ( struct Vmxnet3_TxDesc ) , false ) ;
@ -1496,6 +1500,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
/* TXC ring */
/* TXC ring */
pa = VMXNET3_READ_TX_QUEUE_DESCR64 ( d , qdescr_pa , conf . compRingBasePA ) ;
pa = VMXNET3_READ_TX_QUEUE_DESCR64 ( d , qdescr_pa , conf . compRingBasePA ) ;
size = VMXNET3_READ_TX_QUEUE_DESCR32 ( d , qdescr_pa , conf . compRingSize ) ;
size = VMXNET3_READ_TX_QUEUE_DESCR32 ( d , qdescr_pa , conf . compRingSize ) ;
if ( size > VMXNET3_TC_RING_MAX_SIZE ) {
size = VMXNET3_TC_RING_MAX_SIZE ;
}
vmxnet3_ring_init ( d , & s - > txq_descr [ i ] . comp_ring , pa , size ,
vmxnet3_ring_init ( d , & s - > txq_descr [ i ] . comp_ring , pa , size ,
sizeof ( struct Vmxnet3_TxCompDesc ) , true ) ;
sizeof ( struct Vmxnet3_TxCompDesc ) , true ) ;
VMXNET3_RING_DUMP ( VMW_CFPRN , " TXC " , i , & s - > txq_descr [ i ] . comp_ring ) ;
VMXNET3_RING_DUMP ( VMW_CFPRN , " TXC " , i , & s - > txq_descr [ i ] . comp_ring ) ;
@ -1537,6 +1544,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
/* RX rings */
/* RX rings */
pa = VMXNET3_READ_RX_QUEUE_DESCR64 ( d , qd_pa , conf . rxRingBasePA [ j ] ) ;
pa = VMXNET3_READ_RX_QUEUE_DESCR64 ( d , qd_pa , conf . rxRingBasePA [ j ] ) ;
size = VMXNET3_READ_RX_QUEUE_DESCR32 ( d , qd_pa , conf . rxRingSize [ j ] ) ;
size = VMXNET3_READ_RX_QUEUE_DESCR32 ( d , qd_pa , conf . rxRingSize [ j ] ) ;
if ( size > VMXNET3_RX_RING_MAX_SIZE ) {
size = VMXNET3_RX_RING_MAX_SIZE ;
}
vmxnet3_ring_init ( d , & s - > rxq_descr [ i ] . rx_ring [ j ] , pa , size ,
vmxnet3_ring_init ( d , & s - > rxq_descr [ i ] . rx_ring [ j ] , pa , size ,
sizeof ( struct Vmxnet3_RxDesc ) , false ) ;
sizeof ( struct Vmxnet3_RxDesc ) , false ) ;
VMW_CFPRN ( " RX queue %d:%d: Base: % " PRIx64 " , Size: %d " ,
VMW_CFPRN ( " RX queue %d:%d: Base: % " PRIx64 " , Size: %d " ,
@ -1546,6 +1556,9 @@ static void vmxnet3_activate_device(VMXNET3State *s)
/* RXC ring */
/* RXC ring */
pa = VMXNET3_READ_RX_QUEUE_DESCR64 ( d , qd_pa , conf . compRingBasePA ) ;
pa = VMXNET3_READ_RX_QUEUE_DESCR64 ( d , qd_pa , conf . compRingBasePA ) ;
size = VMXNET3_READ_RX_QUEUE_DESCR32 ( d , qd_pa , conf . compRingSize ) ;
size = VMXNET3_READ_RX_QUEUE_DESCR32 ( d , qd_pa , conf . compRingSize ) ;
if ( size > VMXNET3_RC_RING_MAX_SIZE ) {
size = VMXNET3_RC_RING_MAX_SIZE ;
}
vmxnet3_ring_init ( d , & s - > rxq_descr [ i ] . comp_ring , pa , size ,
vmxnet3_ring_init ( d , & s - > rxq_descr [ i ] . comp_ring , pa , size ,
sizeof ( struct Vmxnet3_RxCompDesc ) , true ) ;
sizeof ( struct Vmxnet3_RxCompDesc ) , true ) ;
VMW_CFPRN ( " RXC queue %d: Base: % " PRIx64 " , Size: %d " , i , pa , size ) ;
VMW_CFPRN ( " RXC queue %d: Base: % " PRIx64 " , Size: %d " , i , pa , size ) ;