Force pci.o to be included.
[people/xl0/gpxe.git] / src / drivers / net / legacy.c
index 1b36c0d..96b3bcb 100644 (file)
@@ -21,7 +21,11 @@ struct nic nic;
 static int legacy_transmit ( struct net_device *netdev, struct pk_buff *pkb ) {
        struct nic *nic = netdev->priv;
        struct ethhdr *ethhdr = pkb->data;
 static int legacy_transmit ( struct net_device *netdev, struct pk_buff *pkb ) {
        struct nic *nic = netdev->priv;
        struct ethhdr *ethhdr = pkb->data;
+       int pad_len;
 
 
+       pad_len = ( ETH_ZLEN - pkb_len ( pkb ) );
+       if ( pad_len > 0 )
+               memset ( pkb_put ( pkb, pad_len ), 0, pad_len );
        pkb_pull ( pkb, sizeof ( *ethhdr ) );
        nic->nic_op->transmit ( nic, ( const char * ) ethhdr->h_dest,
                                ntohs ( ethhdr->h_protocol ),
        pkb_pull ( pkb, sizeof ( *ethhdr ) );
        nic->nic_op->transmit ( nic, ( const char * ) ethhdr->h_dest,
                                ntohs ( ethhdr->h_protocol ),
@@ -77,6 +81,9 @@ int legacy_probe ( struct pci_device *pci,
                return rc;
        }
 
                return rc;
        }
 
+       /* Do not remove this message */
+       printf ( "WARNING: Using legacy NIC wrapper\n" );
+
        return 0;
 }
 
        return 0;
 }
 
@@ -102,3 +109,5 @@ int dummy_connect ( struct nic *nic __unused ) {
 void dummy_irq ( struct nic *nic __unused, irq_action_t irq_action __unused ) {
        return;
 }
 void dummy_irq ( struct nic *nic __unused, irq_action_t irq_action __unused ) {
        return;
 }
+
+REQUIRE_OBJECT ( pci );