diff options
author | Michael Brown | 2006-06-05 18:10:14 +0200 |
---|---|---|
committer | Michael Brown | 2006-06-05 18:10:14 +0200 |
commit | 7826de3f7ef20565b02d0fc1076c6628cd616773 (patch) | |
tree | e12fa5f207a258b04f1724bb63c83b563f93bf87 /src/drivers/net/pnic.c | |
parent | Added a very quick and dirty compatibility layer, to allow (diff) | |
download | ipxe-7826de3f7ef20565b02d0fc1076c6628cd616773.tar.gz ipxe-7826de3f7ef20565b02d0fc1076c6628cd616773.tar.xz ipxe-7826de3f7ef20565b02d0fc1076c6628cd616773.zip |
PNIC doesn't auto-pad.
Diffstat (limited to 'src/drivers/net/pnic.c')
-rw-r--r-- | src/drivers/net/pnic.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/drivers/net/pnic.c b/src/drivers/net/pnic.c index efb3c6f4..ad98c609 100644 --- a/src/drivers/net/pnic.c +++ b/src/drivers/net/pnic.c @@ -147,9 +147,17 @@ TRANSMIT - Transmit a frame ***************************************************************************/ static int pnic_transmit ( struct net_device *netdev, struct pk_buff *pkb ) { struct pnic *pnic = netdev->priv; + int pad_len; + /* Pad to minimum packet length */ + pad_len = ( ETH_ZLEN - pkb_len ( pkb ) ); + if ( pad_len > 0 ) + memset ( pkb_put ( pkb, pad_len ), 0, pad_len ); + + /* Send packet */ pnic_command ( pnic, PNIC_CMD_XMIT, pkb->data, pkb_len ( pkb ), NULL, 0, NULL ); + free_pkb ( pkb ); return 0; } |