On Sun, 14 Jan 2007, Kolbjørn Barmen wrote:
> I'm missing TX bytes from my a2065:
> 
> daneel ~ # ifconfig eth0
> eth0      Link encap:Ethernet  HWaddr 00:80:10:00:14:18
>           inet addr:158.38.152.229  Bcast:158.38.152.255 Mask:255.255.255.0
>           inet6 addr: fe80::280:10ff:fe00:1418/64 Scope:Link
>           inet6 addr: 2001:700:1:2::a:1200/64 Scope:Global
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:5236233 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:3035691 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:6063 txqueuelen:1000
>           RX bytes:2341484260 (2233.0 Mb)  TX bytes:0 (0.0 b)
>                                                     ^^^^^^^^^
>           Base address:0x4000 Memory:80e98000-80ea0000
> 
> It's there for the apne:
> 
> chetter plugins # ifconfig eth0
> eth0      Link encap:Ethernet  HWaddr 00:40:F4:1C:67:2F
>           inet addr:158.38.152.232  Bcast:158.38.152.255 Mask:255.255.255.0
>           inet6 addr: fe80::240:f4ff:fe1c:672f/64 Scope:Link
>           inet6 addr: 2001:700:1:2::a:1260/64 Scope:Global
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:161691 errors:0 dropped:3 overruns:0 frame:6
>           TX packets:53139 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:51 txqueuelen:1000
>           RX bytes:11991040 (11.4 Mb)  TX bytes:12477459 (11.8 Mb)
>           Interrupt:2 Base address:0x300
> 
> 
> Driver bug perhaps? Anyone alse with a2065 perhaps that see this?

Both the A2065 and Ariadne driver seem to miss code to update
net_device_stats.tx_bytes. The patch below (compile-tested only) may fix that.
Please give it a try and report back.

Signed-off-by: Geert Uytterhoeven <[EMAIL PROTECTED]>

diff --git a/drivers/net/a2065.c b/drivers/net/a2065.c
index d76548e..7217ff3 100644
--- a/drivers/net/a2065.c
+++ b/drivers/net/a2065.c
@@ -563,7 +563,6 @@ static int lance_start_xmit (struct sk_buff *skb, struct 
net_device *dev)
        volatile struct lance_init_block *ib = lp->init_block;
        int entry, skblen, len;
        int status = 0;
-       static int outs;
        unsigned long flags;
 
        skblen = skb->len;
@@ -608,8 +607,7 @@ static int lance_start_xmit (struct sk_buff *skb, struct 
net_device *dev)
        /* Now, give the packet to the lance */
        ib->btx_ring [entry].tmd1_bits = (LE_T1_POK|LE_T1_OWN);
        lp->tx_new = (lp->tx_new+1) & lp->tx_ring_mod_mask;
-
-       outs++;
+       lp->stats.tx_bytes += skblen;
 
        if (TX_BUFFS_AVAIL <= 0)
                netif_stop_queue(dev);
diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c
index 9dfc09b..fd1d990 100644
--- a/drivers/net/ariadne.c
+++ b/drivers/net/ariadne.c
@@ -677,6 +677,7 @@ static int ariadne_start_xmit(struct sk_buff *skb, struct 
net_device *dev)
        priv->cur_tx -= TX_RING_SIZE;
        priv->dirty_tx -= TX_RING_SIZE;
     }
+    priv->stats.tx_bytes += len;
 
     /* Trigger an immediate send poll. */
     lance->RAP = CSR0;         /* PCnet-ISA Controller Status */

Gr{oetje,eeting}s,

                                                Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                                            -- Linus Torvalds

Reply via email to