mirror of https://gitee.com/openkylin/linux.git
arcnet: convert to internal stats
Use pre-existing network_device_stats inside network_device rather than own private structure. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
60961ce4d0
commit
5803c5122a
|
@ -102,7 +102,7 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
skb = alloc_skb(length + ARC_HDR_SIZE, GFP_ATOMIC);
|
skb = alloc_skb(length + ARC_HDR_SIZE, GFP_ATOMIC);
|
||||||
if (skb == NULL) {
|
if (skb == NULL) {
|
||||||
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
||||||
lp->stats.rx_dropped++;
|
dev->stats.rx_dropped++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
skb_put(skb, length + ARC_HDR_SIZE);
|
skb_put(skb, length + ARC_HDR_SIZE);
|
||||||
|
|
|
@ -105,7 +105,6 @@ static int arcnet_header(struct sk_buff *skb, struct net_device *dev,
|
||||||
unsigned short type, const void *daddr,
|
unsigned short type, const void *daddr,
|
||||||
const void *saddr, unsigned len);
|
const void *saddr, unsigned len);
|
||||||
static int arcnet_rebuild_header(struct sk_buff *skb);
|
static int arcnet_rebuild_header(struct sk_buff *skb);
|
||||||
static struct net_device_stats *arcnet_get_stats(struct net_device *dev);
|
|
||||||
static int go_tx(struct net_device *dev);
|
static int go_tx(struct net_device *dev);
|
||||||
|
|
||||||
static int debug = ARCNET_DEBUG;
|
static int debug = ARCNET_DEBUG;
|
||||||
|
@ -347,7 +346,6 @@ static void arcdev_setup(struct net_device *dev)
|
||||||
dev->stop = arcnet_close;
|
dev->stop = arcnet_close;
|
||||||
dev->hard_start_xmit = arcnet_send_packet;
|
dev->hard_start_xmit = arcnet_send_packet;
|
||||||
dev->tx_timeout = arcnet_timeout;
|
dev->tx_timeout = arcnet_timeout;
|
||||||
dev->get_stats = arcnet_get_stats;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct net_device *alloc_arcdev(char *name)
|
struct net_device *alloc_arcdev(char *name)
|
||||||
|
@ -583,8 +581,8 @@ static int arcnet_rebuild_header(struct sk_buff *skb)
|
||||||
} else {
|
} else {
|
||||||
BUGMSG(D_NORMAL,
|
BUGMSG(D_NORMAL,
|
||||||
"I don't understand ethernet protocol %Xh addresses!\n", type);
|
"I don't understand ethernet protocol %Xh addresses!\n", type);
|
||||||
lp->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
lp->stats.tx_aborted_errors++;
|
dev->stats.tx_aborted_errors++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we couldn't resolve the address... give up. */
|
/* if we couldn't resolve the address... give up. */
|
||||||
|
@ -645,7 +643,7 @@ static int arcnet_send_packet(struct sk_buff *skb, struct net_device *dev)
|
||||||
!proto->ack_tx) {
|
!proto->ack_tx) {
|
||||||
/* done right away and we don't want to acknowledge
|
/* done right away and we don't want to acknowledge
|
||||||
the package later - forget about it now */
|
the package later - forget about it now */
|
||||||
lp->stats.tx_bytes += skb->len;
|
dev->stats.tx_bytes += skb->len;
|
||||||
freeskb = 1;
|
freeskb = 1;
|
||||||
} else {
|
} else {
|
||||||
/* do it the 'split' way */
|
/* do it the 'split' way */
|
||||||
|
@ -709,7 +707,7 @@ static int go_tx(struct net_device *dev)
|
||||||
/* start sending */
|
/* start sending */
|
||||||
ACOMMAND(TXcmd | (lp->cur_tx << 3));
|
ACOMMAND(TXcmd | (lp->cur_tx << 3));
|
||||||
|
|
||||||
lp->stats.tx_packets++;
|
dev->stats.tx_packets++;
|
||||||
lp->lasttrans_dest = lp->lastload_dest;
|
lp->lasttrans_dest = lp->lastload_dest;
|
||||||
lp->lastload_dest = 0;
|
lp->lastload_dest = 0;
|
||||||
lp->excnak_pending = 0;
|
lp->excnak_pending = 0;
|
||||||
|
@ -732,11 +730,11 @@ static void arcnet_timeout(struct net_device *dev)
|
||||||
msg = " - missed IRQ?";
|
msg = " - missed IRQ?";
|
||||||
} else {
|
} else {
|
||||||
msg = "";
|
msg = "";
|
||||||
lp->stats.tx_aborted_errors++;
|
dev->stats.tx_aborted_errors++;
|
||||||
lp->timed_out = 1;
|
lp->timed_out = 1;
|
||||||
ACOMMAND(NOTXcmd | (lp->cur_tx << 3));
|
ACOMMAND(NOTXcmd | (lp->cur_tx << 3));
|
||||||
}
|
}
|
||||||
lp->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
|
|
||||||
/* make sure we didn't miss a TX or a EXC NAK IRQ */
|
/* make sure we didn't miss a TX or a EXC NAK IRQ */
|
||||||
AINTMASK(0);
|
AINTMASK(0);
|
||||||
|
@ -865,8 +863,8 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
|
||||||
"transmit was not acknowledged! "
|
"transmit was not acknowledged! "
|
||||||
"(status=%Xh, dest=%02Xh)\n",
|
"(status=%Xh, dest=%02Xh)\n",
|
||||||
status, lp->lasttrans_dest);
|
status, lp->lasttrans_dest);
|
||||||
lp->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
lp->stats.tx_carrier_errors++;
|
dev->stats.tx_carrier_errors++;
|
||||||
} else {
|
} else {
|
||||||
BUGMSG(D_DURING,
|
BUGMSG(D_DURING,
|
||||||
"broadcast was not acknowledged; that's normal "
|
"broadcast was not acknowledged; that's normal "
|
||||||
|
@ -905,7 +903,7 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
|
||||||
if (txbuf != -1) {
|
if (txbuf != -1) {
|
||||||
if (lp->outgoing.proto->continue_tx(dev, txbuf)) {
|
if (lp->outgoing.proto->continue_tx(dev, txbuf)) {
|
||||||
/* that was the last segment */
|
/* that was the last segment */
|
||||||
lp->stats.tx_bytes += lp->outgoing.skb->len;
|
dev->stats.tx_bytes += lp->outgoing.skb->len;
|
||||||
if(!lp->outgoing.proto->ack_tx)
|
if(!lp->outgoing.proto->ack_tx)
|
||||||
{
|
{
|
||||||
dev_kfree_skb_irq(lp->outgoing.skb);
|
dev_kfree_skb_irq(lp->outgoing.skb);
|
||||||
|
@ -930,7 +928,7 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
|
||||||
}
|
}
|
||||||
if (status & lp->intmask & RECONflag) {
|
if (status & lp->intmask & RECONflag) {
|
||||||
ACOMMAND(CFLAGScmd | CONFIGclear);
|
ACOMMAND(CFLAGScmd | CONFIGclear);
|
||||||
lp->stats.tx_carrier_errors++;
|
dev->stats.tx_carrier_errors++;
|
||||||
|
|
||||||
BUGMSG(D_RECON, "Network reconfiguration detected (status=%Xh)\n",
|
BUGMSG(D_RECON, "Network reconfiguration detected (status=%Xh)\n",
|
||||||
status);
|
status);
|
||||||
|
@ -1038,8 +1036,8 @@ static void arcnet_rx(struct net_device *dev, int bufnum)
|
||||||
"(%d+4 bytes)\n",
|
"(%d+4 bytes)\n",
|
||||||
bufnum, pkt.hard.source, pkt.hard.dest, length);
|
bufnum, pkt.hard.source, pkt.hard.dest, length);
|
||||||
|
|
||||||
lp->stats.rx_packets++;
|
dev->stats.rx_packets++;
|
||||||
lp->stats.rx_bytes += length + ARC_HDR_SIZE;
|
dev->stats.rx_bytes += length + ARC_HDR_SIZE;
|
||||||
|
|
||||||
/* call the right receiver for the protocol */
|
/* call the right receiver for the protocol */
|
||||||
if (arc_proto_map[soft->proto]->is_ip) {
|
if (arc_proto_map[soft->proto]->is_ip) {
|
||||||
|
@ -1067,18 +1065,6 @@ static void arcnet_rx(struct net_device *dev, int bufnum)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the current statistics. This may be called with the card open or
|
|
||||||
* closed.
|
|
||||||
*/
|
|
||||||
static struct net_device_stats *arcnet_get_stats(struct net_device *dev)
|
|
||||||
{
|
|
||||||
struct arcnet_local *lp = netdev_priv(dev);
|
|
||||||
return &lp->stats;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void null_rx(struct net_device *dev, int bufnum,
|
static void null_rx(struct net_device *dev, int bufnum,
|
||||||
struct archdr *pkthdr, int length)
|
struct archdr *pkthdr, int length)
|
||||||
{
|
{
|
||||||
|
|
|
@ -119,7 +119,7 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
skb = alloc_skb(length + ARC_HDR_SIZE + sizeof(int), GFP_ATOMIC);
|
skb = alloc_skb(length + ARC_HDR_SIZE + sizeof(int), GFP_ATOMIC);
|
||||||
if (skb == NULL) {
|
if (skb == NULL) {
|
||||||
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
||||||
lp->stats.rx_dropped++;
|
dev->stats.rx_dropped++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
skb_put(skb, length + ARC_HDR_SIZE + sizeof(int));
|
skb_put(skb, length + ARC_HDR_SIZE + sizeof(int));
|
||||||
|
|
|
@ -88,7 +88,6 @@ MODULE_LICENSE("GPL");
|
||||||
*/
|
*/
|
||||||
static __be16 type_trans(struct sk_buff *skb, struct net_device *dev)
|
static __be16 type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct arcnet_local *lp = netdev_priv(dev);
|
|
||||||
struct archdr *pkt = (struct archdr *) skb->data;
|
struct archdr *pkt = (struct archdr *) skb->data;
|
||||||
struct arc_rfc1051 *soft = &pkt->soft.rfc1051;
|
struct arc_rfc1051 *soft = &pkt->soft.rfc1051;
|
||||||
int hdr_size = ARC_HDR_SIZE + RFC1051_HDR_SIZE;
|
int hdr_size = ARC_HDR_SIZE + RFC1051_HDR_SIZE;
|
||||||
|
@ -112,8 +111,8 @@ static __be16 type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||||
return htons(ETH_P_ARP);
|
return htons(ETH_P_ARP);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_crc_errors++;
|
dev->stats.rx_crc_errors++;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +139,7 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
skb = alloc_skb(length + ARC_HDR_SIZE, GFP_ATOMIC);
|
skb = alloc_skb(length + ARC_HDR_SIZE, GFP_ATOMIC);
|
||||||
if (skb == NULL) {
|
if (skb == NULL) {
|
||||||
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
||||||
lp->stats.rx_dropped++;
|
dev->stats.rx_dropped++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
skb_put(skb, length + ARC_HDR_SIZE);
|
skb_put(skb, length + ARC_HDR_SIZE);
|
||||||
|
@ -168,7 +167,6 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
static int build_header(struct sk_buff *skb, struct net_device *dev,
|
static int build_header(struct sk_buff *skb, struct net_device *dev,
|
||||||
unsigned short type, uint8_t daddr)
|
unsigned short type, uint8_t daddr)
|
||||||
{
|
{
|
||||||
struct arcnet_local *lp = netdev_priv(dev);
|
|
||||||
int hdr_size = ARC_HDR_SIZE + RFC1051_HDR_SIZE;
|
int hdr_size = ARC_HDR_SIZE + RFC1051_HDR_SIZE;
|
||||||
struct archdr *pkt = (struct archdr *) skb_push(skb, hdr_size);
|
struct archdr *pkt = (struct archdr *) skb_push(skb, hdr_size);
|
||||||
struct arc_rfc1051 *soft = &pkt->soft.rfc1051;
|
struct arc_rfc1051 *soft = &pkt->soft.rfc1051;
|
||||||
|
@ -184,8 +182,8 @@ static int build_header(struct sk_buff *skb, struct net_device *dev,
|
||||||
default:
|
default:
|
||||||
BUGMSG(D_NORMAL, "RFC1051: I don't understand protocol %d (%Xh)\n",
|
BUGMSG(D_NORMAL, "RFC1051: I don't understand protocol %d (%Xh)\n",
|
||||||
type, type);
|
type, type);
|
||||||
lp->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
lp->stats.tx_aborted_errors++;
|
dev->stats.tx_aborted_errors++;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,6 @@ static __be16 type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct archdr *pkt = (struct archdr *) skb->data;
|
struct archdr *pkt = (struct archdr *) skb->data;
|
||||||
struct arc_rfc1201 *soft = &pkt->soft.rfc1201;
|
struct arc_rfc1201 *soft = &pkt->soft.rfc1201;
|
||||||
struct arcnet_local *lp = netdev_priv(dev);
|
|
||||||
int hdr_size = ARC_HDR_SIZE + RFC1201_HDR_SIZE;
|
int hdr_size = ARC_HDR_SIZE + RFC1201_HDR_SIZE;
|
||||||
|
|
||||||
/* Pull off the arcnet header. */
|
/* Pull off the arcnet header. */
|
||||||
|
@ -121,8 +120,8 @@ static __be16 type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||||
case ARC_P_NOVELL_EC:
|
case ARC_P_NOVELL_EC:
|
||||||
return htons(ETH_P_802_3);
|
return htons(ETH_P_802_3);
|
||||||
default:
|
default:
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_crc_errors++;
|
dev->stats.rx_crc_errors++;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,8 +171,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
in->sequence, soft->split_flag, soft->sequence);
|
in->sequence, soft->split_flag, soft->sequence);
|
||||||
lp->rfc1201.aborted_seq = soft->sequence;
|
lp->rfc1201.aborted_seq = soft->sequence;
|
||||||
dev_kfree_skb_irq(in->skb);
|
dev_kfree_skb_irq(in->skb);
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_missed_errors++;
|
dev->stats.rx_missed_errors++;
|
||||||
in->skb = NULL;
|
in->skb = NULL;
|
||||||
}
|
}
|
||||||
in->sequence = soft->sequence;
|
in->sequence = soft->sequence;
|
||||||
|
@ -181,7 +180,7 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
skb = alloc_skb(length + ARC_HDR_SIZE, GFP_ATOMIC);
|
skb = alloc_skb(length + ARC_HDR_SIZE, GFP_ATOMIC);
|
||||||
if (skb == NULL) {
|
if (skb == NULL) {
|
||||||
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
BUGMSG(D_NORMAL, "Memory squeeze, dropping packet.\n");
|
||||||
lp->stats.rx_dropped++;
|
dev->stats.rx_dropped++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
skb_put(skb, length + ARC_HDR_SIZE);
|
skb_put(skb, length + ARC_HDR_SIZE);
|
||||||
|
@ -213,7 +212,7 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
BUGMSG(D_EXTRA,
|
BUGMSG(D_EXTRA,
|
||||||
"ARP source address was 00h, set to %02Xh.\n",
|
"ARP source address was 00h, set to %02Xh.\n",
|
||||||
saddr);
|
saddr);
|
||||||
lp->stats.rx_crc_errors++;
|
dev->stats.rx_crc_errors++;
|
||||||
*cptr = saddr;
|
*cptr = saddr;
|
||||||
} else {
|
} else {
|
||||||
BUGMSG(D_DURING, "ARP source address (%Xh) is fine.\n",
|
BUGMSG(D_DURING, "ARP source address (%Xh) is fine.\n",
|
||||||
|
@ -222,8 +221,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
} else {
|
} else {
|
||||||
BUGMSG(D_NORMAL, "funny-shaped ARP packet. (%Xh, %Xh)\n",
|
BUGMSG(D_NORMAL, "funny-shaped ARP packet. (%Xh, %Xh)\n",
|
||||||
arp->ar_hln, arp->ar_pln);
|
arp->ar_hln, arp->ar_pln);
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_crc_errors++;
|
dev->stats.rx_crc_errors++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BUGLVL(D_SKB) arcnet_dump_skb(dev, skb, "rx");
|
BUGLVL(D_SKB) arcnet_dump_skb(dev, skb, "rx");
|
||||||
|
@ -257,8 +256,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
soft->split_flag);
|
soft->split_flag);
|
||||||
dev_kfree_skb_irq(in->skb);
|
dev_kfree_skb_irq(in->skb);
|
||||||
in->skb = NULL;
|
in->skb = NULL;
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_missed_errors++;
|
dev->stats.rx_missed_errors++;
|
||||||
in->lastpacket = in->numpackets = 0;
|
in->lastpacket = in->numpackets = 0;
|
||||||
}
|
}
|
||||||
if (soft->split_flag & 1) { /* first packet in split */
|
if (soft->split_flag & 1) { /* first packet in split */
|
||||||
|
@ -269,8 +268,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
"(splitflag=%d, seq=%d)\n",
|
"(splitflag=%d, seq=%d)\n",
|
||||||
in->sequence, soft->split_flag,
|
in->sequence, soft->split_flag,
|
||||||
soft->sequence);
|
soft->sequence);
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_missed_errors++;
|
dev->stats.rx_missed_errors++;
|
||||||
dev_kfree_skb_irq(in->skb);
|
dev_kfree_skb_irq(in->skb);
|
||||||
}
|
}
|
||||||
in->sequence = soft->sequence;
|
in->sequence = soft->sequence;
|
||||||
|
@ -281,8 +280,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
BUGMSG(D_EXTRA, "incoming packet more than 16 segments; dropping. (splitflag=%d)\n",
|
BUGMSG(D_EXTRA, "incoming packet more than 16 segments; dropping. (splitflag=%d)\n",
|
||||||
soft->split_flag);
|
soft->split_flag);
|
||||||
lp->rfc1201.aborted_seq = soft->sequence;
|
lp->rfc1201.aborted_seq = soft->sequence;
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_length_errors++;
|
dev->stats.rx_length_errors++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
in->skb = skb = alloc_skb(508 * in->numpackets + ARC_HDR_SIZE,
|
in->skb = skb = alloc_skb(508 * in->numpackets + ARC_HDR_SIZE,
|
||||||
|
@ -290,7 +289,7 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
if (skb == NULL) {
|
if (skb == NULL) {
|
||||||
BUGMSG(D_NORMAL, "(split) memory squeeze, dropping packet.\n");
|
BUGMSG(D_NORMAL, "(split) memory squeeze, dropping packet.\n");
|
||||||
lp->rfc1201.aborted_seq = soft->sequence;
|
lp->rfc1201.aborted_seq = soft->sequence;
|
||||||
lp->stats.rx_dropped++;
|
dev->stats.rx_dropped++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
skb->dev = dev;
|
skb->dev = dev;
|
||||||
|
@ -314,8 +313,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
"first! (splitflag=%d, seq=%d, aborted=%d)\n",
|
"first! (splitflag=%d, seq=%d, aborted=%d)\n",
|
||||||
soft->split_flag, soft->sequence,
|
soft->split_flag, soft->sequence,
|
||||||
lp->rfc1201.aborted_seq);
|
lp->rfc1201.aborted_seq);
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_missed_errors++;
|
dev->stats.rx_missed_errors++;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -325,8 +324,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
if (packetnum <= in->lastpacket - 1) {
|
if (packetnum <= in->lastpacket - 1) {
|
||||||
BUGMSG(D_EXTRA, "duplicate splitpacket ignored! (splitflag=%d)\n",
|
BUGMSG(D_EXTRA, "duplicate splitpacket ignored! (splitflag=%d)\n",
|
||||||
soft->split_flag);
|
soft->split_flag);
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_frame_errors++;
|
dev->stats.rx_frame_errors++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* "bad" duplicate, kill reassembly */
|
/* "bad" duplicate, kill reassembly */
|
||||||
|
@ -336,8 +335,8 @@ static void rx(struct net_device *dev, int bufnum,
|
||||||
lp->rfc1201.aborted_seq = soft->sequence;
|
lp->rfc1201.aborted_seq = soft->sequence;
|
||||||
dev_kfree_skb_irq(in->skb);
|
dev_kfree_skb_irq(in->skb);
|
||||||
in->skb = NULL;
|
in->skb = NULL;
|
||||||
lp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
lp->stats.rx_missed_errors++;
|
dev->stats.rx_missed_errors++;
|
||||||
in->lastpacket = in->numpackets = 0;
|
in->lastpacket = in->numpackets = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -404,8 +403,8 @@ static int build_header(struct sk_buff *skb, struct net_device *dev,
|
||||||
default:
|
default:
|
||||||
BUGMSG(D_NORMAL, "RFC1201: I don't understand protocol %d (%Xh)\n",
|
BUGMSG(D_NORMAL, "RFC1201: I don't understand protocol %d (%Xh)\n",
|
||||||
type, type);
|
type, type);
|
||||||
lp->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
lp->stats.tx_aborted_errors++;
|
dev->stats.tx_aborted_errors++;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -235,8 +235,6 @@ struct Outgoing {
|
||||||
|
|
||||||
|
|
||||||
struct arcnet_local {
|
struct arcnet_local {
|
||||||
struct net_device_stats stats;
|
|
||||||
|
|
||||||
uint8_t config, /* current value of CONFIG register */
|
uint8_t config, /* current value of CONFIG register */
|
||||||
timeout, /* Extended timeout for COM20020 */
|
timeout, /* Extended timeout for COM20020 */
|
||||||
backplane, /* Backplane flag for COM20020 */
|
backplane, /* Backplane flag for COM20020 */
|
||||||
|
|
Loading…
Reference in New Issue