summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/legacy.c
diff options
context:
space:
mode:
authorMichael Brown2006-06-05 18:10:36 +0200
committerMichael Brown2006-06-05 18:10:36 +0200
commit754cfdfcf42fe6e76dc5f5c4168f124990fa3b80 (patch)
tree59c4be031fd8ff976e9dd580f3beb036abf43de9 /src/drivers/net/legacy.c
parentPNIC doesn't auto-pad. (diff)
downloadipxe-754cfdfcf42fe6e76dc5f5c4168f124990fa3b80.tar.gz
ipxe-754cfdfcf42fe6e76dc5f5c4168f124990fa3b80.tar.xz
ipxe-754cfdfcf42fe6e76dc5f5c4168f124990fa3b80.zip
Legacy drivers will not pad when necessary
Diffstat (limited to 'src/drivers/net/legacy.c')
-rw-r--r--src/drivers/net/legacy.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/drivers/net/legacy.c b/src/drivers/net/legacy.c
index 1b36c0de..6e9c8ae9 100644
--- a/src/drivers/net/legacy.c
+++ b/src/drivers/net/legacy.c
@@ -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;
+ 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 ),