@ -797,7 +797,8 @@ struct mvpp2_port {
# define MVPP2_RXD_L3_IP6 BIT(30)
# define MVPP2_RXD_BUF_HDR BIT(31)
struct mvpp2_tx_desc {
/* HW TX descriptor for PPv2.1 */
struct mvpp21_tx_desc {
u32 command ; /* Options used by HW for packet transmitting.*/
u8 packet_offset ; /* the offset from the buffer beginning */
u8 phys_txq ; /* destination queue ID */
@ -808,7 +809,8 @@ struct mvpp2_tx_desc {
u32 reserved2 ; /* reserved (for future use) */
} ;
struct mvpp2_rx_desc {
/* HW RX descriptor for PPv2.1 */
struct mvpp21_rx_desc {
u32 status ; /* info about received packet */
u16 reserved1 ; /* parser_info (for future use, PnC) */
u16 data_size ; /* size of received packet in bytes */
@ -823,6 +825,21 @@ struct mvpp2_rx_desc {
u32 reserved8 ;
} ;
/* Opaque type used by the driver to manipulate the HW TX and RX
* descriptors
*/
struct mvpp2_tx_desc {
union {
struct mvpp21_tx_desc pp21 ;
} ;
} ;
struct mvpp2_rx_desc {
union {
struct mvpp21_rx_desc pp21 ;
} ;
} ;
/* Per-CPU Tx queue control */
struct mvpp2_txq_pcpu {
int cpu ;
@ -1023,59 +1040,59 @@ static void mvpp2_txdesc_dma_addr_set(struct mvpp2_port *port,
struct mvpp2_tx_desc * tx_desc ,
dma_addr_t dma_addr )
{
tx_desc - > buf_dma_addr = dma_addr ;
tx_desc - > pp21 . buf_dma_addr = dma_addr ;
}
static void mvpp2_txdesc_size_set ( struct mvpp2_port * port ,
struct mvpp2_tx_desc * tx_desc ,
size_t size )
{
tx_desc - > data_size = size ;
tx_desc - > pp21 . data_size = size ;
}
static void mvpp2_txdesc_txq_set ( struct mvpp2_port * port ,
struct mvpp2_tx_desc * tx_desc ,
unsigned int txq )
{
tx_desc - > phys_txq = txq ;
tx_desc - > pp21 . p hys_txq = txq ;
}
static void mvpp2_txdesc_cmd_set ( struct mvpp2_port * port ,
struct mvpp2_tx_desc * tx_desc ,
unsigned int command )
{
tx_desc - > command = command ;
tx_desc - > pp21 . command = command ;
}
static void mvpp2_txdesc_offset_set ( struct mvpp2_port * port ,
struct mvpp2_tx_desc * tx_desc ,
unsigned int offset )
{
tx_desc - > packet_offset = offset ;
tx_desc - > pp21 . p acket_offset = offset ;
}
static dma_addr_t mvpp2_rxdesc_dma_addr_get ( struct mvpp2_port * port ,
struct mvpp2_rx_desc * rx_desc )
{
return rx_desc - > buf_dma_addr ;
return rx_desc - > pp21 . buf_dma_addr ;
}
static unsigned long mvpp2_rxdesc_cookie_get ( struct mvpp2_port * port ,
struct mvpp2_rx_desc * rx_desc )
{
return rx_desc - > buf_cookie ;
return rx_desc - > pp21 . buf_cookie ;
}
static size_t mvpp2_rxdesc_size_get ( struct mvpp2_port * port ,
struct mvpp2_rx_desc * rx_desc )
{
return rx_desc - > data_size ;
return rx_desc - > pp21 . data_size ;
}
static u32 mvpp2_rxdesc_status_get ( struct mvpp2_port * port ,
struct mvpp2_rx_desc * rx_desc )
{
return rx_desc - > status ;
return rx_desc - > pp21 . status ;
}
static void mvpp2_txq_inc_get ( struct mvpp2_txq_pcpu * txq_pcpu )