summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/drivers/net/3c90x.c7
-rw-r--r--src/drivers/net/3c90x.h1
2 files changed, 5 insertions, 3 deletions
diff --git a/src/drivers/net/3c90x.c b/src/drivers/net/3c90x.c
index 1433e64a..364492bb 100644
--- a/src/drivers/net/3c90x.c
+++ b/src/drivers/net/3c90x.c
@@ -346,11 +346,12 @@ static int a3c90x_transmit(struct net_device *netdev,
tx_cur_desc->DnNextPtr = 0;
/* FrameStartHeader differs in 90x and >= 90xB
- * It contains length in 90x and a round up boundary and packet ID for
- * 90xB and 90xC. We can leave this to 0 for 90xB and 90xC.
+ * It contains the packet length in 90x and a round up boundary and
+ * packet ID for 90xB and 90xC. Disable packet length round-up on the
+ * later revisions.
*/
tx_cur_desc->FrameStartHeader =
- fshTxIndicate | (inf_3c90x->isBrev ? 0x00 : len);
+ fshTxIndicate | (inf_3c90x->isBrev ? fshRndupDefeat : len);
tx_cur_desc->DataAddr = virt_to_bus(iob->data);
tx_cur_desc->DataLength = len | downLastFrag;
diff --git a/src/drivers/net/3c90x.h b/src/drivers/net/3c90x.h
index 53fc522b..8bffa37f 100644
--- a/src/drivers/net/3c90x.h
+++ b/src/drivers/net/3c90x.h
@@ -202,6 +202,7 @@ enum GlobalResetParams {
enum FrameStartHeader {
fshTxIndicate = 0x8000,
fshDnComplete = 0x10000,
+ fshRndupDefeat = 0x10000000,
};
enum UpDownDesc {