diff options
Diffstat (limited to 'drivers/net/wan/hd6457x.c')
| -rw-r--r-- | drivers/net/wan/hd6457x.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/drivers/net/wan/hd6457x.c b/drivers/net/wan/hd6457x.c index 8d0a1f2f00e5..591fb45a7c68 100644 --- a/drivers/net/wan/hd6457x.c +++ b/drivers/net/wan/hd6457x.c | |||
| @@ -271,9 +271,9 @@ static inline void sca_msci_intr(port_t *port) | |||
| 271 | sca_out(stat & (ST1_UDRN | ST1_CDCD), msci + ST1, card); | 271 | sca_out(stat & (ST1_UDRN | ST1_CDCD), msci + ST1, card); |
| 272 | 272 | ||
| 273 | if (stat & ST1_UDRN) { | 273 | if (stat & ST1_UDRN) { |
| 274 | struct net_device_stats *stats = hdlc_stats(port_to_dev(port)); | 274 | /* TX Underrun error detected */ |
| 275 | stats->tx_errors++; /* TX Underrun error detected */ | 275 | port_to_dev(port)->stats.tx_errors++; |
| 276 | stats->tx_fifo_errors++; | 276 | port_to_dev(port)->stats.tx_fifo_errors++; |
| 277 | } | 277 | } |
| 278 | 278 | ||
| 279 | if (stat & ST1_CDCD) | 279 | if (stat & ST1_CDCD) |
| @@ -286,7 +286,6 @@ static inline void sca_msci_intr(port_t *port) | |||
| 286 | static inline void sca_rx(card_t *card, port_t *port, pkt_desc __iomem *desc, u16 rxin) | 286 | static inline void sca_rx(card_t *card, port_t *port, pkt_desc __iomem *desc, u16 rxin) |
| 287 | { | 287 | { |
| 288 | struct net_device *dev = port_to_dev(port); | 288 | struct net_device *dev = port_to_dev(port); |
| 289 | struct net_device_stats *stats = hdlc_stats(dev); | ||
| 290 | struct sk_buff *skb; | 289 | struct sk_buff *skb; |
| 291 | u16 len; | 290 | u16 len; |
| 292 | u32 buff; | 291 | u32 buff; |
| @@ -298,7 +297,7 @@ static inline void sca_rx(card_t *card, port_t *port, pkt_desc __iomem *desc, u1 | |||
| 298 | len = readw(&desc->len); | 297 | len = readw(&desc->len); |
| 299 | skb = dev_alloc_skb(len); | 298 | skb = dev_alloc_skb(len); |
| 300 | if (!skb) { | 299 | if (!skb) { |
| 301 | stats->rx_dropped++; | 300 | dev->stats.rx_dropped++; |
| 302 | return; | 301 | return; |
| 303 | } | 302 | } |
| 304 | 303 | ||
| @@ -327,8 +326,8 @@ static inline void sca_rx(card_t *card, port_t *port, pkt_desc __iomem *desc, u1 | |||
| 327 | printk(KERN_DEBUG "%s RX(%i):", dev->name, skb->len); | 326 | printk(KERN_DEBUG "%s RX(%i):", dev->name, skb->len); |
| 328 | debug_frame(skb); | 327 | debug_frame(skb); |
| 329 | #endif | 328 | #endif |
| 330 | stats->rx_packets++; | 329 | dev->stats.rx_packets++; |
| 331 | stats->rx_bytes += skb->len; | 330 | dev->stats.rx_bytes += skb->len; |
| 332 | dev->last_rx = jiffies; | 331 | dev->last_rx = jiffies; |
| 333 | skb->protocol = hdlc_type_trans(skb, dev); | 332 | skb->protocol = hdlc_type_trans(skb, dev); |
| 334 | netif_rx(skb); | 333 | netif_rx(skb); |
| @@ -339,17 +338,18 @@ static inline void sca_rx(card_t *card, port_t *port, pkt_desc __iomem *desc, u1 | |||
| 339 | /* Receive DMA interrupt service */ | 338 | /* Receive DMA interrupt service */ |
| 340 | static inline void sca_rx_intr(port_t *port) | 339 | static inline void sca_rx_intr(port_t *port) |
| 341 | { | 340 | { |
| 341 | struct net_device *dev = port_to_dev(port); | ||
| 342 | u16 dmac = get_dmac_rx(port); | 342 | u16 dmac = get_dmac_rx(port); |
| 343 | card_t *card = port_to_card(port); | 343 | card_t *card = port_to_card(port); |
| 344 | u8 stat = sca_in(DSR_RX(phy_node(port)), card); /* read DMA Status */ | 344 | u8 stat = sca_in(DSR_RX(phy_node(port)), card); /* read DMA Status */ |
| 345 | struct net_device_stats *stats = hdlc_stats(port_to_dev(port)); | ||
| 346 | 345 | ||
| 347 | /* Reset DSR status bits */ | 346 | /* Reset DSR status bits */ |
| 348 | sca_out((stat & (DSR_EOT | DSR_EOM | DSR_BOF | DSR_COF)) | DSR_DWE, | 347 | sca_out((stat & (DSR_EOT | DSR_EOM | DSR_BOF | DSR_COF)) | DSR_DWE, |
| 349 | DSR_RX(phy_node(port)), card); | 348 | DSR_RX(phy_node(port)), card); |
| 350 | 349 | ||
| 351 | if (stat & DSR_BOF) | 350 | if (stat & DSR_BOF) |
| 352 | stats->rx_over_errors++; /* Dropped one or more frames */ | 351 | /* Dropped one or more frames */ |
| 352 | dev->stats.rx_over_errors++; | ||
| 353 | 353 | ||
| 354 | while (1) { | 354 | while (1) { |
| 355 | u32 desc_off = desc_offset(port, port->rxin, 0); | 355 | u32 desc_off = desc_offset(port, port->rxin, 0); |
| @@ -364,12 +364,14 @@ static inline void sca_rx_intr(port_t *port) | |||
| 364 | if (!(stat & ST_RX_EOM)) | 364 | if (!(stat & ST_RX_EOM)) |
| 365 | port->rxpart = 1; /* partial frame received */ | 365 | port->rxpart = 1; /* partial frame received */ |
| 366 | else if ((stat & ST_ERROR_MASK) || port->rxpart) { | 366 | else if ((stat & ST_ERROR_MASK) || port->rxpart) { |
| 367 | stats->rx_errors++; | 367 | dev->stats.rx_errors++; |
| 368 | if (stat & ST_RX_OVERRUN) stats->rx_fifo_errors++; | 368 | if (stat & ST_RX_OVERRUN) |
| 369 | dev->stats.rx_fifo_errors++; | ||
| 369 | else if ((stat & (ST_RX_SHORT | ST_RX_ABORT | | 370 | else if ((stat & (ST_RX_SHORT | ST_RX_ABORT | |
| 370 | ST_RX_RESBIT)) || port->rxpart) | 371 | ST_RX_RESBIT)) || port->rxpart) |
| 371 | stats->rx_frame_errors++; | 372 | dev->stats.rx_frame_errors++; |
| 372 | else if (stat & ST_RX_CRC) stats->rx_crc_errors++; | 373 | else if (stat & ST_RX_CRC) |
| 374 | dev->stats.rx_crc_errors++; | ||
| 373 | if (stat & ST_RX_EOM) | 375 | if (stat & ST_RX_EOM) |
| 374 | port->rxpart = 0; /* received last fragment */ | 376 | port->rxpart = 0; /* received last fragment */ |
| 375 | } else | 377 | } else |
| @@ -390,7 +392,6 @@ static inline void sca_rx_intr(port_t *port) | |||
| 390 | static inline void sca_tx_intr(port_t *port) | 392 | static inline void sca_tx_intr(port_t *port) |
| 391 | { | 393 | { |
| 392 | struct net_device *dev = port_to_dev(port); | 394 | struct net_device *dev = port_to_dev(port); |
| 393 | struct net_device_stats *stats = hdlc_stats(dev); | ||
| 394 | u16 dmac = get_dmac_tx(port); | 395 | u16 dmac = get_dmac_tx(port); |
| 395 | card_t* card = port_to_card(port); | 396 | card_t* card = port_to_card(port); |
| 396 | u8 stat; | 397 | u8 stat; |
| @@ -412,8 +413,8 @@ static inline void sca_tx_intr(port_t *port) | |||
| 412 | break; /* Transmitter is/will_be sending this frame */ | 413 | break; /* Transmitter is/will_be sending this frame */ |
| 413 | 414 | ||
| 414 | desc = desc_address(port, port->txlast, 1); | 415 | desc = desc_address(port, port->txlast, 1); |
| 415 | stats->tx_packets++; | 416 | dev->stats.tx_packets++; |
| 416 | stats->tx_bytes += readw(&desc->len); | 417 | dev->stats.tx_bytes += readw(&desc->len); |
| 417 | writeb(0, &desc->stat); /* Free descriptor */ | 418 | writeb(0, &desc->stat); /* Free descriptor */ |
| 418 | port->txlast = next_desc(port, port->txlast, 1); | 419 | port->txlast = next_desc(port, port->txlast, 1); |
| 419 | } | 420 | } |
