|
@@ -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 = ðerfabric_operations;
|
2900
|
2883
|
|