From: till straumann <till.straum...@alumni.tu-berlin.de>

Update #4344
---
 .../beatnik/net/if_mve/mv643xx_eth_bsdnet.c   | 352 +-----------------
 1 file changed, 8 insertions(+), 344 deletions(-)

diff --git a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c 
b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c
index b3ec1542ff..e233f96dde 100644
--- a/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c
+++ b/bsps/powerpc/beatnik/net/if_mve/mv643xx_eth_bsdnet.c
@@ -132,11 +132,6 @@
 
 /* CONFIGURABLE PARAMETERS */
 
-/* Enable Hardware Snooping; if this is disabled (undefined),
- * cache coherency is maintained by software.
- */
-#undef  ENABLE_HW_SNOOPING
-
 /* Compile-time debugging features */
 
 /* Enable paranoia assertions and checks; reduce # of descriptors to minimum 
for stressing   */
@@ -189,8 +184,6 @@
 #define MV643XXETH_NUM_DRIVER_SLOTS    2
 #endif
 
-#define TX_NUM_TAG_SLOTS                       1 /* leave room for tag; must 
not be 0 */
-
 #define DRVNAME                        "mve"
 #define MAX_NUM_SLOTS   3
 
@@ -204,32 +197,8 @@
 #define STATIC static
 #endif
 
-struct mveth_private *
-BSP_mve_setup(
-       int              unit,
-       rtems_id tid,
-       void (*cleanup_txbuf)(void *user_buf, void *closure, int 
error_on_tx_occurred), 
-       void *cleanup_txbuf_arg,
-       void *(*alloc_rxbuf)(int *p_size, uintptr_t *p_data_addr),
-       void (*consume_rxbuf)(void *user_buf, void *closure, int len),
-       void *consume_rxbuf_arg,
-       int             rx_ring_size,
-       int             tx_ring_size,
-       int             irq_mask
-);
-
-#define TX_AVAILABLE_RING_SIZE(mp)             ((mp)->xbuf_count - 
(TX_NUM_TAG_SLOTS))
-
 /* macros for ring alignment; proper alignment is a hardware req; . */
 
-#ifdef ENABLE_HW_SNOOPING
-
-#define RING_ALIGNMENT                         16
-/* rx buffers must be 64-bit aligned (chip requirement) */
-#define RX_BUF_ALIGNMENT                       8
-
-#else /* ENABLE_HW_SNOOPING */
-
 /* Software cache management */
 
 #ifndef __PPC__
@@ -247,292 +216,17 @@ BSP_mve_setup(
 #define RX_BUF_ALIGNMENT                       PPC_CACHE_ALIGNMENT
 #endif
 
-#endif /* ENABLE_HW_SNOOPING */
-
-
 /* HELPER MACROS */
 
 /* Align base to alignment 'a' */
 #define MV643XX_ALIGN(b, a)    ((((uint32_t)(b)) + (a)-1) & (~((a)-1)))
 
-#define NOOP()                 do {} while(0)
-
-/* Function like macros */
-#define MV_READ(off) \
-               ld_le32((volatile uint32_t *)(BSP_MV64x60_BASE + (off)))
-#define MV_WRITE(off, data)            \
-               st_le32((volatile uint32_t *)(BSP_MV64x60_BASE + (off)), 
((unsigned)data))
-
-
-/* ENET window mapped 1:1 to CPU addresses by our BSP/MotLoad
- * -- if this is changed, we should think about caching the 'next' and 'buf' 
pointers.
- */
-#define CPUADDR2ENET(a) ((Dma_addr_t)(a))
-#define ENET2CPUADDR(a) (a)
-
-#if 1  /* Whether to automatically try to reclaim descriptors when enqueueing 
new packets */
-#define MVETH_CLEAN_ON_SEND(mp) (BSP_mve_swipe_tx(mp))
-#else
-#define MVETH_CLEAN_ON_SEND(mp) (-1)
-#endif
-
-#define NEXT_TXD(d)    (d)->next
-#define NEXT_RXD(d)    (d)->next
-
-/* REGISTER AND DESCRIPTOR OFFSET AND BIT DEFINITIONS */
-
-/* Descriptor Definitions */
-/* Rx descriptor */
-#define RDESC_ERROR                                                            
        (1<< 0) /* Error summary    */
-
-/* Error code (bit 1&2) is only valid if summary bit is set */
-#define RDESC_CRC_ERROR                                                        
        (    1)
-#define RDESC_OVERRUN_ERROR                                                    
(    3)
-#define RDESC_MAX_FRAMELENGTH_ERROR                                    (    5)
-#define RDESC_RESOURCE_ERROR                                           (    7)
-
-#define RDESC_LAST                                                             
        (1<<26) /* Last Descriptor   */
-#define RDESC_FRST                                                             
        (1<<27) /* First Descriptor  */
-#define RDESC_INT_ENA                                                          
(1<<29) /* Enable Interrupts */
-#define RDESC_DMA_OWNED                                                        
        (1<<31)
-
-/* Tx descriptor */
-#define TDESC_ERROR                                                            
        (1<< 0) /* Error summary     */
-#define TDESC_ZERO_PAD                                                         
(1<<19)
-#define TDESC_LAST                                                             
        (1<<20) /* Last Descriptor   */
-#define TDESC_FRST                                                             
        (1<<21) /* First Descriptor  */
-#define TDESC_GEN_CRC                                                          
(1<<22)
-#define TDESC_INT_ENA                                                          
(1<<23) /* Enable Interrupts */
-#define TDESC_DMA_OWNED                                                        
        (1<<31)
-
-
-
-/* Register Definitions */
-#define MV643XX_ETH_PHY_ADDR_R                                         (0x2000)
-#define MV643XX_ETH_SMI_R                                                      
(0x2004)
-#define MV643XX_ETH_SMI_BUSY                                           (1<<28)
-#define MV643XX_ETH_SMI_VALID                                          (1<<27)
-#define MV643XX_ETH_SMI_OP_WR                                          (0<<26)
-#define MV643XX_ETH_SMI_OP_RD                                          (1<<26)
-
-#define MV643XX_ETH_TRANSMIT_QUEUE_COMMAND_R(port)     (0x2448 + ((port)<<10))
-#define MV643XX_ETH_TX_START(queue)                                    
(0x0001<<(queue))
-#define MV643XX_ETH_TX_STOP(queue)                                     
(0x0100<<(queue))
-#define MV643XX_ETH_TX_START_M(queues)                         ((queues)&0xff)
-#define MV643XX_ETH_TX_STOP_M(queues)                          
(((queues)&0xff)<<8)
-#define MV643XX_ETH_TX_STOP_ALL                                                
(0xff00)
-#define MV643XX_ETH_TX_ANY_RUNNING                                     (0x00ff)
-
-#define MV643XX_ETH_RECEIVE_QUEUE_COMMAND_R(port)      (0x2680 + ((port)<<10))
-#define MV643XX_ETH_RX_START(queue)                                    
(0x0001<<(queue))
-#define MV643XX_ETH_RX_STOP(queue)                                     
(0x0100<<(queue))
-#define MV643XX_ETH_RX_STOP_ALL                                                
(0xff00)
-#define MV643XX_ETH_RX_ANY_RUNNING                                     (0x00ff)
-
-#define MV643XX_ETH_CURRENT_SERVED_TX_DESC(port)       (0x2684 + ((port)<<10))
-
 /* The chip puts the ethernet header at offset 2 into the buffer so
  * that the payload is aligned
  */
 #define ETH_RX_OFFSET                                                          
2
 #define ETH_CRC_LEN                                                            
        4       /* strip FCS at end of packet */
 
-
-#define MV643XX_ETH_INTERRUPT_CAUSE_R(port)                    (0x2460 + 
((port)<<10))
-/* not fully understood; RX seems to raise 0x0005 or 0x0c05 if last buffer is 
filled and 0x0c00
- * if there are no buffers
- */
-#define MV643XX_ETH_ALL_IRQS                                           
(0x0007ffff)
-#define MV643XX_ETH_KNOWN_IRQS                                         
(0x00000c05)
-#define MV643XX_ETH_IRQ_EXT_ENA                                                
(1<<1)
-#define MV643XX_ETH_IRQ_RX_DONE                                                
(1<<2)
-#define MV643XX_ETH_IRQ_RX_NO_DESC                                     (1<<10)
-
-#define MV643XX_ETH_INTERRUPT_EXTEND_CAUSE_R(port)     (0x2464 + ((port)<<10))
-/* not fully understood; TX seems to raise 0x0001 and link change is 0x00010000
- * if there are no buffers
- */
-#define MV643XX_ETH_ALL_EXT_IRQS                                       
(0x0011ffff)
-#define MV643XX_ETH_KNOWN_EXT_IRQS                                     
(0x00010101)
-#define MV643XX_ETH_EXT_IRQ_TX_DONE                                    (1<<0)
-#define MV643XX_ETH_EXT_IRQ_LINK_CHG                           (1<<16)
-#define MV643XX_ETH_INTERRUPT_ENBL_R(port)                     (0x2468 + 
((port)<<10))
-#define MV643XX_ETH_INTERRUPT_EXTEND_ENBL_R(port)      (0x246c + ((port)<<10))
-
-/* port configuration */
-#define MV643XX_ETH_PORT_CONFIG_R(port)                                (0x2400 
+ ((port)<<10))
-#define        MV643XX_ETH_UNICAST_PROMISC_MODE                        (1<<0)
-#define        MV643XX_ETH_DFLT_RX_Q(q)                                        
((q)<<1)
-#define        MV643XX_ETH_DFLT_RX_ARP_Q(q)                            ((q)<<4)
-#define MV643XX_ETH_REJ_BCAST_IF_NOT_IP_OR_ARP         (1<<7)
-#define MV643XX_ETH_REJ_BCAST_IF_IP                                    (1<<8)
-#define MV643XX_ETH_REJ_BCAST_IF_ARP                           (1<<9)
-#define MV643XX_ETH_TX_AM_NO_UPDATE_ERR_SUMMARY                (1<<12)
-#define MV643XX_ETH_CAPTURE_TCP_FRAMES_ENBL                    (1<<14)
-#define MV643XX_ETH_CAPTURE_UDP_FRAMES_ENBL                    (1<<15)
-#define        MV643XX_ETH_DFLT_RX_TCP_Q(q)                            
((q)<<16)
-#define        MV643XX_ETH_DFLT_RX_UDP_Q(q)                            
((q)<<19)
-#define        MV643XX_ETH_DFLT_RX_BPDU_Q(q)                           
((q)<<22)
-
-
-
-#define MV643XX_ETH_PORT_CONFIG_XTEND_R(port)          (0x2404 + ((port)<<10))
-#define MV643XX_ETH_CLASSIFY_ENBL                                      (1<<0)
-#define MV643XX_ETH_SPAN_BPDU_PACKETS_AS_NORMAL                (0<<1)
-#define MV643XX_ETH_SPAN_BPDU_PACKETS_2_Q7                     (1<<1)
-#define MV643XX_ETH_PARTITION_DISBL                                    (0<<2)
-#define MV643XX_ETH_PARTITION_ENBL                                     (1<<2)
-
-#define MV643XX_ETH_SDMA_CONFIG_R(port)                                (0x241c 
+ ((port)<<10))
-#define MV643XX_ETH_SDMA_RIFB                                          (1<<0)
-#define MV643XX_ETH_RX_BURST_SZ_1_64BIT                                (0<<1)
-#define MV643XX_ETH_RX_BURST_SZ_2_64BIT                                (1<<1)
-#define MV643XX_ETH_RX_BURST_SZ_4_64BIT                                (2<<1)
-#define MV643XX_ETH_RX_BURST_SZ_8_64BIT                                (3<<1)
-#define MV643XX_ETH_RX_BURST_SZ_16_64BIT                       (4<<1)
-#define MV643XX_ETH_SMDA_BLM_RX_NO_SWAP                                (1<<4)
-#define MV643XX_ETH_SMDA_BLM_TX_NO_SWAP                                (1<<5)
-#define MV643XX_ETH_SMDA_DESC_BYTE_SWAP                                (1<<6)
-#define MV643XX_ETH_TX_BURST_SZ_1_64BIT                                (0<<22)
-#define MV643XX_ETH_TX_BURST_SZ_2_64BIT                                (1<<22)
-#define MV643XX_ETH_TX_BURST_SZ_4_64BIT                                (2<<22)
-#define MV643XX_ETH_TX_BURST_SZ_8_64BIT                                (3<<22)
-#define MV643XX_ETH_TX_BURST_SZ_16_64BIT                       (4<<22)
-
-#define        MV643XX_ETH_RX_MIN_FRAME_SIZE_R(port)           (0x247c + 
((port)<<10))
-
-
-#define MV643XX_ETH_SERIAL_CONTROL_R(port)                     (0x243c + 
((port)<<10))
-#define MV643XX_ETH_SERIAL_PORT_ENBL                           (1<<0)  /* 
Enable serial port */
-#define MV643XX_ETH_FORCE_LINK_PASS                                    (1<<1)
-#define MV643XX_ETH_DISABLE_AUTO_NEG_FOR_DUPLEX                (1<<2)
-#define MV643XX_ETH_DISABLE_AUTO_NEG_FOR_FLOWCTL       (1<<3)
-#define MV643XX_ETH_ADVERTISE_SYMMETRIC_FLOWCTL                (1<<4)
-#define MV643XX_ETH_FORCE_FC_MODE_TX_PAUSE_DIS         (1<<5)
-#define MV643XX_ETH_FORCE_BP_MODE_JAM_TX                       (1<<7)
-#define MV643XX_ETH_FORCE_BP_MODE_JAM_TX_ON_RX_ERR     (1<<8)
-#define MV643XX_ETH_BIT9_UNKNOWN                                       (1<<9)  
/* unknown purpose; linux sets this */
-#define MV643XX_ETH_FORCE_LINK_FAIL_DISABLE                    (1<<10)
-#define MV643XX_ETH_RETRANSMIT_FOREVER                         (1<<11) /* 
limit to 16 attempts if clear    */
-#define MV643XX_ETH_DISABLE_AUTO_NEG_SPEED_GMII                (1<<13)
-#define MV643XX_ETH_DTE_ADV_1                                          (1<<14)
-#define MV643XX_ETH_AUTO_NEG_BYPASS_ENBL                       (1<<15)
-#define MV643XX_ETH_RESTART_AUTO_NEG                           (1<<16)
-#define MV643XX_ETH_SC_MAX_RX_1518                                     (0<<17) 
/* Limit RX packet size */
-#define MV643XX_ETH_SC_MAX_RX_1522                                     (1<<17) 
/* Limit RX packet size */
-#define MV643XX_ETH_SC_MAX_RX_1552                                     (2<<17) 
/* Limit RX packet size */
-#define MV643XX_ETH_SC_MAX_RX_9022                                     (3<<17) 
/* Limit RX packet size */
-#define MV643XX_ETH_SC_MAX_RX_9192                                     (4<<17) 
/* Limit RX packet size */
-#define MV643XX_ETH_SC_MAX_RX_9700                                     (5<<17) 
/* Limit RX packet size */
-#define MV643XX_ETH_SC_MAX_RX_MASK                                     (7<<17) 
/* bitmask */
-#define MV643XX_ETH_SET_EXT_LOOPBACK                           (1<<20)
-#define MV643XX_ETH_SET_FULL_DUPLEX                                    (1<<21)
-#define MV643XX_ETH_ENBL_FLOWCTL_TX_RX_IN_FD           (1<<22) /* enable flow 
ctrl on rx and tx in full-duplex */
-#define MV643XX_ETH_SET_GMII_SPEED_1000                                (1<<23) 
/* 10/100 if clear */
-#define MV643XX_ETH_SET_MII_SPEED_100                          (1<<24) /* 10 
if clear     */
-
-#define MV643XX_ETH_PORT_STATUS_R(port)                                (0x2444 
+ ((port)<<10))
-
-#define MV643XX_ETH_PORT_STATUS_MODE_10_BIT                    (1<<0)
-#define MV643XX_ETH_PORT_STATUS_LINK_UP                                (1<<1)
-#define MV643XX_ETH_PORT_STATUS_FDX                                    (1<<2)
-#define MV643XX_ETH_PORT_STATUS_FC                                     (1<<3)
-#define MV643XX_ETH_PORT_STATUS_1000                           (1<<4)
-#define MV643XX_ETH_PORT_STATUS_100                                    (1<<5)
-/* PSR bit 6 unknown */
-#define MV643XX_ETH_PORT_STATUS_TX_IN_PROGRESS         (1<<7)
-#define MV643XX_ETH_PORT_STATUS_ANEG_BYPASSED          (1<<8)
-#define MV643XX_ETH_PORT_STATUS_PARTITION                      (1<<9)
-#define MV643XX_ETH_PORT_STATUS_TX_FIFO_EMPTY          (1<<10)
-
-#define MV643XX_ETH_MIB_COUNTERS(port)                         (0x3000 + 
((port)<<7))
-#define MV643XX_ETH_NUM_MIB_COUNTERS                           32
-
-#define MV643XX_ETH_MIB_GOOD_OCTS_RCVD_LO                      (0)
-#define MV643XX_ETH_MIB_GOOD_OCTS_RCVD_HI                      (1<<2)
-#define MV643XX_ETH_MIB_BAD_OCTS_RCVD                          (2<<2)
-#define MV643XX_ETH_MIB_INTERNAL_MAC_TX_ERR                    (3<<2)
-#define MV643XX_ETH_MIB_GOOD_FRAMES_RCVD                       (4<<2)
-#define MV643XX_ETH_MIB_BAD_FRAMES_RCVD                                (5<<2)
-#define MV643XX_ETH_MIB_BCAST_FRAMES_RCVD                      (6<<2)
-#define MV643XX_ETH_MIB_MCAST_FRAMES_RCVD                      (7<<2)
-#define MV643XX_ETH_MIB_FRAMES_64_OCTS                         (8<<2)
-#define MV643XX_ETH_MIB_FRAMES_65_127_OCTS                     (9<<2)
-#define MV643XX_ETH_MIB_FRAMES_128_255_OCTS                    (10<<2)
-#define MV643XX_ETH_MIB_FRAMES_256_511_OCTS                    (11<<2)
-#define MV643XX_ETH_MIB_FRAMES_512_1023_OCTS           (12<<2)
-#define MV643XX_ETH_MIB_FRAMES_1024_MAX_OCTS           (13<<2)
-#define MV643XX_ETH_MIB_GOOD_OCTS_SENT_LO                      (14<<2)
-#define MV643XX_ETH_MIB_GOOD_OCTS_SENT_HI                      (15<<2)
-#define MV643XX_ETH_MIB_GOOD_FRAMES_SENT                       (16<<2)
-#define MV643XX_ETH_MIB_EXCESSIVE_COLL                         (17<<2)
-#define MV643XX_ETH_MIB_MCAST_FRAMES_SENT                      (18<<2)
-#define MV643XX_ETH_MIB_BCAST_FRAMES_SENT                      (19<<2)
-#define MV643XX_ETH_MIB_UNREC_MAC_CTRL_RCVD                    (20<<2)
-#define MV643XX_ETH_MIB_FC_SENT                                                
(21<<2)
-#define MV643XX_ETH_MIB_GOOD_FC_RCVD                           (22<<2)
-#define MV643XX_ETH_MIB_BAD_FC_RCVD                                    (23<<2)
-#define MV643XX_ETH_MIB_UNDERSIZE_RCVD                         (24<<2)
-#define MV643XX_ETH_MIB_FRAGMENTS_RCVD                         (25<<2)
-#define MV643XX_ETH_MIB_OVERSIZE_RCVD                          (26<<2)
-#define MV643XX_ETH_MIB_JABBER_RCVD                                    (27<<2)
-#define MV643XX_ETH_MIB_MAC_RX_ERR                                     (28<<2)
-#define MV643XX_ETH_MIB_BAD_CRC_EVENT                          (29<<2)
-#define MV643XX_ETH_MIB_COLL                                           (30<<2)
-#define MV643XX_ETH_MIB_LATE_COLL                                      (31<<2)
-
-#define MV643XX_ETH_DA_FILTER_SPECL_MCAST_TBL(port) (0x3400+((port)<<10))
-#define MV643XX_ETH_DA_FILTER_OTHER_MCAST_TBL(port) (0x3500+((port)<<10))
-#define MV643XX_ETH_DA_FILTER_UNICAST_TBL(port)                
(0x3600+((port)<<10))
-#define MV643XX_ETH_NUM_MCAST_ENTRIES                          64
-#define MV643XX_ETH_NUM_UNICAST_ENTRIES                                4
-
-#define MV643XX_ETH_BAR_0                                                      
(0x2200)
-#define MV643XX_ETH_SIZE_R_0                                           (0x2204)
-#define MV643XX_ETH_BAR_1                                                      
(0x2208)
-#define MV643XX_ETH_SIZE_R_1                                           (0x220c)
-#define MV643XX_ETH_BAR_2                                                      
(0x2210)
-#define MV643XX_ETH_SIZE_R_2                                           (0x2214)
-#define MV643XX_ETH_BAR_3                                                      
(0x2218)
-#define MV643XX_ETH_SIZE_R_3                                           (0x221c)
-#define MV643XX_ETH_BAR_4                                                      
(0x2220)
-#define MV643XX_ETH_SIZE_R_4                                           (0x2224)
-#define MV643XX_ETH_BAR_5                                                      
(0x2228)
-#define MV643XX_ETH_SIZE_R_5                                           (0x222c)
-#define MV643XX_ETH_NUM_BARS                                           6
-
-/* Bits in the BAR reg to program cache snooping */
-#define MV64360_ENET2MEM_SNOOP_NONE 0x0000
-#define MV64360_ENET2MEM_SNOOP_WT      0x1000
-#define MV64360_ENET2MEM_SNOOP_WB      0x2000
-#define MV64360_ENET2MEM_SNOOP_MSK     0x3000
-
-
-#define MV643XX_ETH_BAR_ENBL_R                                         (0x2290)
-#define MV643XX_ETH_BAR_DISABLE(bar)                           (1<<(bar))
-#define MV643XX_ETH_BAR_DISBL_ALL                                      0x3f
-
-#define MV643XX_ETH_RX_Q0_CURRENT_DESC_PTR(port)       (0x260c+((port)<<10))
-#define MV643XX_ETH_RX_Q1_CURRENT_DESC_PTR(port)       (0x261c+((port)<<10))
-#define MV643XX_ETH_RX_Q2_CURRENT_DESC_PTR(port)       (0x262c+((port)<<10))
-#define MV643XX_ETH_RX_Q3_CURRENT_DESC_PTR(port)       (0x263c+((port)<<10))
-#define MV643XX_ETH_RX_Q4_CURRENT_DESC_PTR(port)       (0x264c+((port)<<10))
-#define MV643XX_ETH_RX_Q5_CURRENT_DESC_PTR(port)       (0x265c+((port)<<10))
-#define MV643XX_ETH_RX_Q6_CURRENT_DESC_PTR(port)       (0x266c+((port)<<10))
-#define MV643XX_ETH_RX_Q7_CURRENT_DESC_PTR(port)       (0x267c+((port)<<10))
-
-#define MV643XX_ETH_TX_Q0_CURRENT_DESC_PTR(port)       (0x26c0+((port)<<10))
-#define MV643XX_ETH_TX_Q1_CURRENT_DESC_PTR(port)       (0x26c4+((port)<<10))
-#define MV643XX_ETH_TX_Q2_CURRENT_DESC_PTR(port)       (0x26c8+((port)<<10))
-#define MV643XX_ETH_TX_Q3_CURRENT_DESC_PTR(port)       (0x26cc+((port)<<10))
-#define MV643XX_ETH_TX_Q4_CURRENT_DESC_PTR(port)       (0x26d0+((port)<<10))
-#define MV643XX_ETH_TX_Q5_CURRENT_DESC_PTR(port)       (0x26d4+((port)<<10))
-#define MV643XX_ETH_TX_Q6_CURRENT_DESC_PTR(port)       (0x26d8+((port)<<10))
-#define MV643XX_ETH_TX_Q7_CURRENT_DESC_PTR(port)       (0x26dc+((port)<<10))
-
-#define MV643XX_ETH_MAC_ADDR_LO(port)                          
(0x2414+((port)<<10))
-#define MV643XX_ETH_MAC_ADDR_HI(port)                          
(0x2418+((port)<<10))
-
 /* TYPE DEFINITIONS */
 
 /* just to make the purpose explicit; vars of this
@@ -554,6 +248,12 @@ struct mveth_softc {
        struct mveth_private    *pvt;
 };
 
+typedef struct BsdMveIter {
+       MveEthBufIter it;
+       struct mbuf  *m;
+       struct mbuf  *h;
+} BsdMveIter;
+
 /* GLOBAL VARIABLES */
 #ifdef MVETH_DEBUG_TX_DUMP
 int mveth_tx_dump = 0;
@@ -767,12 +467,6 @@ bail:
        return m;
 }
 
-typedef struct BsdMveIter {
-       MveEthBufIter it;
-       struct mbuf  *m;
-       struct mbuf  *h;
-} BsdMveIter;
-
 static MveEthBufIter *fillIter(struct mbuf *m, BsdMveIter *it)
 {
        if ( (it->m = (void*)m) ) {
@@ -784,7 +478,7 @@ static MveEthBufIter *fillIter(struct mbuf *m, BsdMveIter 
*it)
        return 0;
 }
 
-static MveEthBufIter *nextBuf(const MveEthBufIter *arg)
+static MveEthBufIter *nextBuf(MveEthBufIter *arg)
 {
 BsdMveIter *it = (BsdMveIter*)arg;
        return fillIter( it->m->m_next, it );
@@ -1399,44 +1093,14 @@ rtems_mve_early_link_check_ops = {
 int
 mveth_dring(struct mveth_softc *sc)
 {
-int i;
-if (1) {
-MvEthRxDesc pr;
-printf("RX:\n");
-
-       for (i=0, pr=sc->pvt->rx_ring; i<sc->pvt->rbuf_count; i++, pr++) {
-#ifndef ENABLE_HW_SNOOPING
                /* can't just invalidate the descriptor - if it contains
                 * data that hasn't been flushed yet, we create an 
inconsistency...
                 */
                rtems_bsdnet_semaphore_obtain();
-               INVAL_DESC(pr);
-#endif
-               printf("cnt: 0x%04x, size: 0x%04x, stat: 0x%08x, next: 0x%08x, 
buf: 0x%08x\n",
-                       pr->byte_cnt, pr->buf_size, pr->cmd_sts, 
(uint32_t)pr->next_desc_ptr, pr->buf_ptr);
 
-#ifndef ENABLE_HW_SNOOPING
-               rtems_bsdnet_semaphore_release();
-#endif
-       }
-}
-if (1) {
-MvEthTxDesc pt;
-printf("TX:\n");
-       for (i=0, pt=sc->pvt->tx_ring; i<sc->pvt->xbuf_count; i++, pt++) {
-#ifndef ENABLE_HW_SNOOPING
-               rtems_bsdnet_semaphore_obtain();
-               INVAL_DESC(pt);
-#endif
-               printf("cnt: 0x%04x, stat: 0x%08x, next: 0x%08x, buf: 0x%08x, 
mb: 0x%08x\n",
-                       pt->byte_cnt, pt->cmd_sts, (uint32_t)pt->next_desc_ptr, 
pt->buf_ptr,
-                       (uint32_t)pt->mb);
+               BSP_mve_dring_nosync(sc->pvt);
 
-#ifndef ENABLE_HW_SNOOPING
                rtems_bsdnet_semaphore_release();
-#endif
-       }
-}
        return 0;
 }
 
-- 
2.26.2

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to