소스 검색

Temporary hack to work around the "TX overflow" problem in the interim

period before updating to the new driver API (which can cope with
having TX packets in progress).
tags/v0.9.3
Michael Brown 18 년 전
부모
커밋
d393e61d8a
1개의 변경된 파일3개의 추가작업 그리고 20개의 파일을 삭제
  1. 3
    20
      src/drivers/net/etherfabric.c

+ 3
- 20
src/drivers/net/etherfabric.c 파일 보기

@@ -173,7 +173,6 @@ struct efab_nic {
173 173
 	unsigned int eventq_read_ptr;	/* Falcon only */
174 174
 	unsigned int tx_write_ptr;
175 175
 	unsigned int rx_write_ptr;
176
-	int tx_in_progress;
177 176
 
178 177
 	/** Port 0/1 on the NIC */
179 178
 	int port;
@@ -2706,7 +2705,6 @@ static int etherfabric_poll ( struct nic *nic, int retrieve ) {
2706 2705
 			/* TX completed - mark as done */
2707 2706
 			DBG ( "TX id %x complete\n",
2708 2707
 			      efab->tx_buf.id );
2709
-			efab->tx_in_progress = 0;
2710 2708
 		} else if ( event.type == EFAB_EV_RX ) {
2711 2709
 			/* RX - find corresponding buffer */
2712 2710
 			for ( i = 0 ; i < EFAB_RX_BUFS ; i++ ) {
@@ -2766,15 +2764,6 @@ static void etherfabric_transmit ( struct nic *nic, const char *dest,
2766 2764
 	struct efab_nic *efab = nic->priv_data;
2767 2765
 	unsigned int nstype = htons ( type );
2768 2766
 
2769
-	/* We can only transmit one packet at a time; a TX completion
2770
-	 * event must be received before we can transmit the next
2771
-	 * packet.  Since there is only one static TX buffer, we don't
2772
-	 * worry unduly about overflow, but we report it anyway.
2773
-	 */
2774
-	if ( efab->tx_in_progress ) {
2775
-		printf ( "TX overflow!\n" );
2776
-	}
2777
-
2778 2767
 	/* Fill TX buffer, pad to ETH_ZLEN */
2779 2768
 	memcpy ( efab->tx_buf.addr, dest, ETH_ALEN );
2780 2769
 	memcpy ( efab->tx_buf.addr + ETH_ALEN, nic->node_addr, ETH_ALEN );
@@ -2789,13 +2778,10 @@ static void etherfabric_transmit ( struct nic *nic, const char *dest,
2789 2778
 	/* Push TX descriptor */
2790 2779
 	efab_push_tx_buffer ( efab, &efab->tx_buf );
2791 2780
 
2792
-	/* There is no way to wait for TX complete (i.e. TX buffer
2793
-	 * available to re-use for the next transmit) without reading
2794
-	 * from the event queue.  We therefore simply leave the TX
2795
-	 * buffer marked as "in use" until a TX completion event
2796
-	 * happens to be picked up by a call to etherfabric_poll().
2781
+	/* Allow enough time for the packet to be transmitted.  This
2782
+	 * is a temporary hack until we update to the new driver API.
2797 2783
 	 */
2798
-	efab->tx_in_progress = 1;
2784
+	udelay ( 20 );
2799 2785
 
2800 2786
 	return;
2801 2787
 }
@@ -2892,9 +2878,6 @@ static int etherfabric_probe ( struct nic *nic, struct pci_device *pci ) {
2892 2878
 		return 0;
2893 2879
 	memcpy ( nic->node_addr, efab.mac_addr, ETH_ALEN );
2894 2880
 
2895
-	/* hello world */
2896
-	printf ( "Found EtherFabric %s NIC %!\n", pci->name, nic->node_addr );
2897
-
2898 2881
 	/* point to NIC specific routines */
2899 2882
 	nic->nic_op = &etherfabric_operations;
2900 2883
 

Loading…
취소
저장