summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/pnic.c
diff options
context:
space:
mode:
authorMichael Brown2006-06-05 18:10:14 +0200
committerMichael Brown2006-06-05 18:10:14 +0200
commit7826de3f7ef20565b02d0fc1076c6628cd616773 (patch)
treee12fa5f207a258b04f1724bb63c83b563f93bf87 /src/drivers/net/pnic.c
parentAdded a very quick and dirty compatibility layer, to allow (diff)
downloadipxe-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.c8
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;
}