Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 203373
b: refs/heads/master
c: 0a17ee9
h: refs/heads/master
i:
  203371: 66b02d0
v: v3
  • Loading branch information
Ralf Baechle authored and David S. Miller committed Jul 6, 2010
1 parent 806a5ee commit 66d31df
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4e922723589926214c789df05384483a9530d66d
refs/heads/master: 0a17ee90a16ddf6b410bc1a8a28a7e875dc08f8d
49 changes: 25 additions & 24 deletions trunk/drivers/net/ioc3-eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ struct ioc3_private {
struct ioc3_etxd *txr;
struct sk_buff *rx_skbs[512];
struct sk_buff *tx_skbs[128];
struct net_device_stats stats;
int rx_ci; /* RX consumer index */
int rx_pi; /* RX producer index */
int tx_ci; /* TX consumer index */
Expand Down Expand Up @@ -504,8 +503,8 @@ static struct net_device_stats *ioc3_get_stats(struct net_device *dev)
struct ioc3_private *ip = netdev_priv(dev);
struct ioc3 *ioc3 = ip->regs;

ip->stats.collisions += (ioc3_r_etcdc() & ETCDC_COLLCNT_MASK);
return &ip->stats;
dev->stats.collisions += (ioc3_r_etcdc() & ETCDC_COLLCNT_MASK);
return &dev->stats;
}

static void ioc3_tcpudp_checksum(struct sk_buff *skb, uint32_t hwsum, int len)
Expand Down Expand Up @@ -576,8 +575,9 @@ static void ioc3_tcpudp_checksum(struct sk_buff *skb, uint32_t hwsum, int len)
skb->ip_summed = CHECKSUM_UNNECESSARY;
}

static inline void ioc3_rx(struct ioc3_private *ip)
static inline void ioc3_rx(struct net_device *dev)
{
struct ioc3_private *ip = netdev_priv(dev);
struct sk_buff *skb, *new_skb;
struct ioc3 *ioc3 = ip->regs;
int rx_entry, n_entry, len;
Expand All @@ -598,13 +598,13 @@ static inline void ioc3_rx(struct ioc3_private *ip)
if (err & ERXBUF_GOODPKT) {
len = ((w0 >> ERXBUF_BYTECNT_SHIFT) & 0x7ff) - 4;
skb_trim(skb, len);
skb->protocol = eth_type_trans(skb, priv_netdev(ip));
skb->protocol = eth_type_trans(skb, dev);

new_skb = ioc3_alloc_skb(RX_BUF_ALLOC_SIZE, GFP_ATOMIC);
if (!new_skb) {
/* Ouch, drop packet and just recycle packet
to keep the ring filled. */
ip->stats.rx_dropped++;
dev->stats.rx_dropped++;
new_skb = skb;
goto next;
}
Expand All @@ -622,19 +622,19 @@ static inline void ioc3_rx(struct ioc3_private *ip)
rxb = (struct ioc3_erxbuf *) new_skb->data;
skb_reserve(new_skb, RX_OFFSET);

ip->stats.rx_packets++; /* Statistics */
ip->stats.rx_bytes += len;
dev->stats.rx_packets++; /* Statistics */
dev->stats.rx_bytes += len;
} else {
/* The frame is invalid and the skb never
reached the network layer so we can just
recycle it. */
new_skb = skb;
ip->stats.rx_errors++;
/* The frame is invalid and the skb never
reached the network layer so we can just
recycle it. */
new_skb = skb;
dev->stats.rx_errors++;
}
if (err & ERXBUF_CRCERR) /* Statistics */
ip->stats.rx_crc_errors++;
dev->stats.rx_crc_errors++;
if (err & ERXBUF_FRAMERR)
ip->stats.rx_frame_errors++;
dev->stats.rx_frame_errors++;
next:
ip->rx_skbs[n_entry] = new_skb;
rxr[n_entry] = cpu_to_be64(ioc3_map(rxb, 1));
Expand All @@ -652,8 +652,9 @@ static inline void ioc3_rx(struct ioc3_private *ip)
ip->rx_ci = rx_entry;
}

static inline void ioc3_tx(struct ioc3_private *ip)
static inline void ioc3_tx(struct net_device *dev)
{
struct ioc3_private *ip = netdev_priv(dev);
unsigned long packets, bytes;
struct ioc3 *ioc3 = ip->regs;
int tx_entry, o_entry;
Expand Down Expand Up @@ -681,12 +682,12 @@ static inline void ioc3_tx(struct ioc3_private *ip)
tx_entry = (etcir >> 7) & 127;
}

ip->stats.tx_packets += packets;
ip->stats.tx_bytes += bytes;
dev->stats.tx_packets += packets;
dev->stats.tx_bytes += bytes;
ip->txqlen -= packets;

if (ip->txqlen < 128)
netif_wake_queue(priv_netdev(ip));
netif_wake_queue(dev);

ip->tx_ci = o_entry;
spin_unlock(&ip->ioc3_lock);
Expand All @@ -699,9 +700,9 @@ static inline void ioc3_tx(struct ioc3_private *ip)
* with such error interrupts if something really goes wrong, so we might
* also consider to take the interface down.
*/
static void ioc3_error(struct ioc3_private *ip, u32 eisr)
static void ioc3_error(struct net_device *dev, u32 eisr)
{
struct net_device *dev = priv_netdev(ip);
struct ioc3_private *ip = netdev_priv(dev);
unsigned char *iface = dev->name;

spin_lock(&ip->ioc3_lock);
Expand Down Expand Up @@ -747,11 +748,11 @@ static irqreturn_t ioc3_interrupt(int irq, void *_dev)

if (eisr & (EISR_RXOFLO | EISR_RXBUFOFLO | EISR_RXMEMERR |
EISR_RXPARERR | EISR_TXBUFUFLO | EISR_TXMEMERR))
ioc3_error(ip, eisr);
ioc3_error(dev, eisr);
if (eisr & EISR_RXTIMERINT)
ioc3_rx(ip);
ioc3_rx(dev);
if (eisr & EISR_TXEXPLICIT)
ioc3_tx(ip);
ioc3_tx(dev);

return IRQ_HANDLED;
}
Expand Down

0 comments on commit 66d31df

Please sign in to comment.