Skip to content

Commit

Permalink
Merge branch 'upstream-next' of master.kernel.org:/pub/scm/linux/kern…
Browse files Browse the repository at this point in the history
…el/git/jgarzik/netdev-2.6
  • Loading branch information
David S. Miller committed May 13, 2008
2 parents 7ef43eb + 7d2e3cb commit 99dd1a2
Show file tree
Hide file tree
Showing 30 changed files with 257 additions and 304 deletions.
37 changes: 18 additions & 19 deletions drivers/net/3c523.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@ static void elmc_xmt_int(struct net_device *dev);
static void elmc_rnr_int(struct net_device *dev);

struct priv {
struct net_device_stats stats;
unsigned long base;
char *memtop;
unsigned long mapped_start; /* Start of ioremap */
Expand Down Expand Up @@ -989,18 +988,18 @@ static void elmc_rcv_int(struct net_device *dev)
skb->protocol = eth_type_trans(skb, dev);
netif_rx(skb);
dev->last_rx = jiffies;
p->stats.rx_packets++;
p->stats.rx_bytes += totlen;
dev->stats.rx_packets++;
dev->stats.rx_bytes += totlen;
} else {
p->stats.rx_dropped++;
dev->stats.rx_dropped++;
}
} else {
printk(KERN_WARNING "%s: received oversized frame.\n", dev->name);
p->stats.rx_dropped++;
dev->stats.rx_dropped++;
}
} else { /* frame !(ok), only with 'save-bad-frames' */
printk(KERN_WARNING "%s: oops! rfd-error-status: %04x\n", dev->name, status);
p->stats.rx_errors++;
dev->stats.rx_errors++;
}
p->rfd_top->status = 0;
p->rfd_top->last = RFD_SUSP;
Expand All @@ -1018,7 +1017,7 @@ static void elmc_rnr_int(struct net_device *dev)
{
struct priv *p = (struct priv *) dev->priv;

p->stats.rx_errors++;
dev->stats.rx_errors++;

WAIT_4_SCB_CMD(); /* wait for the last cmd */
p->scb->cmd = RUC_ABORT; /* usually the RU is in the 'no resource'-state .. abort it now. */
Expand Down Expand Up @@ -1046,24 +1045,24 @@ static void elmc_xmt_int(struct net_device *dev)
printk(KERN_WARNING "%s: strange .. xmit-int without a 'COMPLETE'\n", dev->name);
}
if (status & STAT_OK) {
p->stats.tx_packets++;
p->stats.collisions += (status & TCMD_MAXCOLLMASK);
dev->stats.tx_packets++;
dev->stats.collisions += (status & TCMD_MAXCOLLMASK);
} else {
p->stats.tx_errors++;
dev->stats.tx_errors++;
if (status & TCMD_LATECOLL) {
printk(KERN_WARNING "%s: late collision detected.\n", dev->name);
p->stats.collisions++;
dev->stats.collisions++;
} else if (status & TCMD_NOCARRIER) {
p->stats.tx_carrier_errors++;
dev->stats.tx_carrier_errors++;
printk(KERN_WARNING "%s: no carrier detected.\n", dev->name);
} else if (status & TCMD_LOSTCTS) {
printk(KERN_WARNING "%s: loss of CTS detected.\n", dev->name);
} else if (status & TCMD_UNDERRUN) {
p->stats.tx_fifo_errors++;
dev->stats.tx_fifo_errors++;
printk(KERN_WARNING "%s: DMA underrun detected.\n", dev->name);
} else if (status & TCMD_MAXCOLL) {
printk(KERN_WARNING "%s: Max. collisions exceeded.\n", dev->name);
p->stats.collisions += 16;
dev->stats.collisions += 16;
}
}

Expand Down Expand Up @@ -1215,12 +1214,12 @@ static struct net_device_stats *elmc_get_stats(struct net_device *dev)
ovrn = p->scb->ovrn_errs;
p->scb->ovrn_errs -= ovrn;

p->stats.rx_crc_errors += crc;
p->stats.rx_fifo_errors += ovrn;
p->stats.rx_frame_errors += aln;
p->stats.rx_dropped += rsc;
dev->stats.rx_crc_errors += crc;
dev->stats.rx_fifo_errors += ovrn;
dev->stats.rx_frame_errors += aln;
dev->stats.rx_dropped += rsc;

return &p->stats;
return &dev->stats;
}

/********************************************************
Expand Down
45 changes: 21 additions & 24 deletions drivers/net/3c527.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,6 @@ struct mc32_local
int slot;

u32 base;
struct net_device_stats net_stats;
volatile struct mc32_mailbox *rx_box;
volatile struct mc32_mailbox *tx_box;
volatile struct mc32_mailbox *exec_box;
Expand Down Expand Up @@ -1093,24 +1092,24 @@ static void mc32_update_stats(struct net_device *dev)

u32 rx_errors=0;

rx_errors+=lp->net_stats.rx_crc_errors +=st->rx_crc_errors;
rx_errors+=dev->stats.rx_crc_errors +=st->rx_crc_errors;
st->rx_crc_errors=0;
rx_errors+=lp->net_stats.rx_fifo_errors +=st->rx_overrun_errors;
rx_errors+=dev->stats.rx_fifo_errors +=st->rx_overrun_errors;
st->rx_overrun_errors=0;
rx_errors+=lp->net_stats.rx_frame_errors +=st->rx_alignment_errors;
rx_errors+=dev->stats.rx_frame_errors +=st->rx_alignment_errors;
st->rx_alignment_errors=0;
rx_errors+=lp->net_stats.rx_length_errors+=st->rx_tooshort_errors;
rx_errors+=dev->stats.rx_length_errors+=st->rx_tooshort_errors;
st->rx_tooshort_errors=0;
rx_errors+=lp->net_stats.rx_missed_errors+=st->rx_outofresource_errors;
rx_errors+=dev->stats.rx_missed_errors+=st->rx_outofresource_errors;
st->rx_outofresource_errors=0;
lp->net_stats.rx_errors=rx_errors;
dev->stats.rx_errors=rx_errors;

/* Number of packets which saw one collision */
lp->net_stats.collisions+=st->dataC[10];
dev->stats.collisions+=st->dataC[10];
st->dataC[10]=0;

/* Number of packets which saw 2--15 collisions */
lp->net_stats.collisions+=st->dataC[11];
dev->stats.collisions+=st->dataC[11];
st->dataC[11]=0;
}

Expand Down Expand Up @@ -1178,7 +1177,7 @@ static void mc32_rx_ring(struct net_device *dev)
skb=dev_alloc_skb(length+2);

if(skb==NULL) {
lp->net_stats.rx_dropped++;
dev->stats.rx_dropped++;
goto dropped;
}

Expand All @@ -1189,8 +1188,8 @@ static void mc32_rx_ring(struct net_device *dev)

skb->protocol=eth_type_trans(skb,dev);
dev->last_rx = jiffies;
lp->net_stats.rx_packets++;
lp->net_stats.rx_bytes += length;
dev->stats.rx_packets++;
dev->stats.rx_bytes += length;
netif_rx(skb);
}

Expand Down Expand Up @@ -1253,34 +1252,34 @@ static void mc32_tx_ring(struct net_device *dev)
/* Not COMPLETED */
break;
}
lp->net_stats.tx_packets++;
dev->stats.tx_packets++;
if(!(np->status & (1<<6))) /* Not COMPLETED_OK */
{
lp->net_stats.tx_errors++;
dev->stats.tx_errors++;

switch(np->status&0x0F)
{
case 1:
lp->net_stats.tx_aborted_errors++;
dev->stats.tx_aborted_errors++;
break; /* Max collisions */
case 2:
lp->net_stats.tx_fifo_errors++;
dev->stats.tx_fifo_errors++;
break;
case 3:
lp->net_stats.tx_carrier_errors++;
dev->stats.tx_carrier_errors++;
break;
case 4:
lp->net_stats.tx_window_errors++;
dev->stats.tx_window_errors++;
break; /* CTS Lost */
case 5:
lp->net_stats.tx_aborted_errors++;
dev->stats.tx_aborted_errors++;
break; /* Transmit timeout */
}
}
/* Packets are sent in order - this is
basically a FIFO queue of buffers matching
the card ring */
lp->net_stats.tx_bytes+=lp->tx_ring[t].skb->len;
dev->stats.tx_bytes+=lp->tx_ring[t].skb->len;
dev_kfree_skb_irq(lp->tx_ring[t].skb);
lp->tx_ring[t].skb=NULL;
atomic_inc(&lp->tx_count);
Expand Down Expand Up @@ -1367,7 +1366,7 @@ static irqreturn_t mc32_interrupt(int irq, void *dev_id)
case 6:
/* Out of RX buffers stat */
/* Must restart rx */
lp->net_stats.rx_dropped++;
dev->stats.rx_dropped++;
mc32_rx_ring(dev);
mc32_start_transceiver(dev);
break;
Expand Down Expand Up @@ -1489,10 +1488,8 @@ static int mc32_close(struct net_device *dev)

static struct net_device_stats *mc32_get_stats(struct net_device *dev)
{
struct mc32_local *lp = netdev_priv(dev);

mc32_update_stats(dev);
return &lp->net_stats;
return &dev->stats;
}


Expand Down
43 changes: 21 additions & 22 deletions drivers/net/8139cp.c
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,6 @@ struct cp_private {
u32 rx_config;
u16 cpcmd;

struct net_device_stats net_stats;
struct cp_extra_stats cp_stats;

unsigned rx_head ____cacheline_aligned;
Expand Down Expand Up @@ -457,8 +456,8 @@ static inline void cp_rx_skb (struct cp_private *cp, struct sk_buff *skb,
{
skb->protocol = eth_type_trans (skb, cp->dev);

cp->net_stats.rx_packets++;
cp->net_stats.rx_bytes += skb->len;
cp->dev->stats.rx_packets++;
cp->dev->stats.rx_bytes += skb->len;
cp->dev->last_rx = jiffies;

#if CP_VLAN_TAG_USED
Expand All @@ -477,17 +476,17 @@ static void cp_rx_err_acct (struct cp_private *cp, unsigned rx_tail,
printk (KERN_DEBUG
"%s: rx err, slot %d status 0x%x len %d\n",
cp->dev->name, rx_tail, status, len);
cp->net_stats.rx_errors++;
cp->dev->stats.rx_errors++;
if (status & RxErrFrame)
cp->net_stats.rx_frame_errors++;
cp->dev->stats.rx_frame_errors++;
if (status & RxErrCRC)
cp->net_stats.rx_crc_errors++;
cp->dev->stats.rx_crc_errors++;
if ((status & RxErrRunt) || (status & RxErrLong))
cp->net_stats.rx_length_errors++;
cp->dev->stats.rx_length_errors++;
if ((status & (FirstFrag | LastFrag)) != (FirstFrag | LastFrag))
cp->net_stats.rx_length_errors++;
cp->dev->stats.rx_length_errors++;
if (status & RxErrFIFO)
cp->net_stats.rx_fifo_errors++;
cp->dev->stats.rx_fifo_errors++;
}

static inline unsigned int cp_rx_csum_ok (u32 status)
Expand Down Expand Up @@ -539,7 +538,7 @@ static int cp_rx_poll(struct napi_struct *napi, int budget)
* that RX fragments are never encountered
*/
cp_rx_err_acct(cp, rx_tail, status, len);
cp->net_stats.rx_dropped++;
dev->stats.rx_dropped++;
cp->cp_stats.rx_frags++;
goto rx_next;
}
Expand All @@ -556,7 +555,7 @@ static int cp_rx_poll(struct napi_struct *napi, int budget)
buflen = cp->rx_buf_sz + RX_OFFSET;
new_skb = dev_alloc_skb (buflen);
if (!new_skb) {
cp->net_stats.rx_dropped++;
dev->stats.rx_dropped++;
goto rx_next;
}

Expand Down Expand Up @@ -710,20 +709,20 @@ static void cp_tx (struct cp_private *cp)
if (netif_msg_tx_err(cp))
printk(KERN_DEBUG "%s: tx err, status 0x%x\n",
cp->dev->name, status);
cp->net_stats.tx_errors++;
cp->dev->stats.tx_errors++;
if (status & TxOWC)
cp->net_stats.tx_window_errors++;
cp->dev->stats.tx_window_errors++;
if (status & TxMaxCol)
cp->net_stats.tx_aborted_errors++;
cp->dev->stats.tx_aborted_errors++;
if (status & TxLinkFail)
cp->net_stats.tx_carrier_errors++;
cp->dev->stats.tx_carrier_errors++;
if (status & TxFIFOUnder)
cp->net_stats.tx_fifo_errors++;
cp->dev->stats.tx_fifo_errors++;
} else {
cp->net_stats.collisions +=
cp->dev->stats.collisions +=
((status >> TxColCntShift) & TxColCntMask);
cp->net_stats.tx_packets++;
cp->net_stats.tx_bytes += skb->len;
cp->dev->stats.tx_packets++;
cp->dev->stats.tx_bytes += skb->len;
if (netif_msg_tx_done(cp))
printk(KERN_DEBUG "%s: tx done, slot %d\n", cp->dev->name, tx_tail);
}
Expand Down Expand Up @@ -956,7 +955,7 @@ static void cp_set_rx_mode (struct net_device *dev)
static void __cp_get_stats(struct cp_private *cp)
{
/* only lower 24 bits valid; write any value to clear */
cp->net_stats.rx_missed_errors += (cpr32 (RxMissed) & 0xffffff);
cp->dev->stats.rx_missed_errors += (cpr32 (RxMissed) & 0xffffff);
cpw32 (RxMissed, 0);
}

Expand All @@ -971,7 +970,7 @@ static struct net_device_stats *cp_get_stats(struct net_device *dev)
__cp_get_stats(cp);
spin_unlock_irqrestore(&cp->lock, flags);

return &cp->net_stats;
return &dev->stats;
}

static void cp_stop_hw (struct cp_private *cp)
Expand Down Expand Up @@ -1142,7 +1141,7 @@ static void cp_clean_rings (struct cp_private *cp)
PCI_DMA_TODEVICE);
if (le32_to_cpu(desc->opts1) & LastFrag)
dev_kfree_skb(skb);
cp->net_stats.tx_dropped++;
cp->dev->stats.tx_dropped++;
}
}

Expand Down
Loading

0 comments on commit 99dd1a2

Please sign in to comment.