|
@@ -129,6 +129,7 @@
|
|
|
- Massive clean-up
|
|
|
- Rewrite PHY, media handling (remove options, full_duplex, backoff)
|
|
|
- Fix Tx engine race for good
|
|
|
+ - Craig Brind: Zero padded aligned buffers for short packets.
|
|
|
|
|
|
*/
|
|
|
|
|
@@ -1326,7 +1327,12 @@ static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev)
|
|
|
rp->stats.tx_dropped++;
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+ /* Padding is not copied and so must be redone. */
|
|
|
skb_copy_and_csum_dev(skb, rp->tx_buf[entry]);
|
|
|
+ if (skb->len < ETH_ZLEN)
|
|
|
+ memset(rp->tx_buf[entry] + skb->len, 0,
|
|
|
+ ETH_ZLEN - skb->len);
|
|
|
rp->tx_skbuff_dma[entry] = 0;
|
|
|
rp->tx_ring[entry].addr = cpu_to_le32(rp->tx_bufs_dma +
|
|
|
(rp->tx_buf[entry] -
|