|
@@ -101,8 +101,6 @@ static int via_ircc_net_open(struct net_device *dev);
|
|
static int via_ircc_net_close(struct net_device *dev);
|
|
static int via_ircc_net_close(struct net_device *dev);
|
|
static int via_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq,
|
|
static int via_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq,
|
|
int cmd);
|
|
int cmd);
|
|
-static struct net_device_stats *via_ircc_net_get_stats(struct net_device
|
|
|
|
- *dev);
|
|
|
|
static void via_ircc_change_dongle_speed(int iobase, int speed,
|
|
static void via_ircc_change_dongle_speed(int iobase, int speed,
|
|
int dongle_id);
|
|
int dongle_id);
|
|
static int RxTimerHandler(struct via_ircc_cb *self, int iobase);
|
|
static int RxTimerHandler(struct via_ircc_cb *self, int iobase);
|
|
@@ -434,7 +432,6 @@ static __devinit int via_ircc_open(int i, chipio_t * info, unsigned int id)
|
|
dev->open = via_ircc_net_open;
|
|
dev->open = via_ircc_net_open;
|
|
dev->stop = via_ircc_net_close;
|
|
dev->stop = via_ircc_net_close;
|
|
dev->do_ioctl = via_ircc_net_ioctl;
|
|
dev->do_ioctl = via_ircc_net_ioctl;
|
|
- dev->get_stats = via_ircc_net_get_stats;
|
|
|
|
|
|
|
|
err = register_netdev(dev);
|
|
err = register_netdev(dev);
|
|
if (err)
|
|
if (err)
|
|
@@ -855,7 +852,7 @@ static int via_ircc_hard_xmit_sir(struct sk_buff *skb,
|
|
async_wrap_skb(skb, self->tx_buff.data,
|
|
async_wrap_skb(skb, self->tx_buff.data,
|
|
self->tx_buff.truesize);
|
|
self->tx_buff.truesize);
|
|
|
|
|
|
- self->stats.tx_bytes += self->tx_buff.len;
|
|
|
|
|
|
+ dev->stats.tx_bytes += self->tx_buff.len;
|
|
/* Send this frame with old speed */
|
|
/* Send this frame with old speed */
|
|
SetBaudRate(iobase, self->io.speed);
|
|
SetBaudRate(iobase, self->io.speed);
|
|
SetPulseWidth(iobase, 12);
|
|
SetPulseWidth(iobase, 12);
|
|
@@ -921,7 +918,7 @@ static int via_ircc_hard_xmit_fir(struct sk_buff *skb,
|
|
self->tx_fifo.queue[self->tx_fifo.free].len = skb->len;
|
|
self->tx_fifo.queue[self->tx_fifo.free].len = skb->len;
|
|
|
|
|
|
self->tx_fifo.tail += skb->len;
|
|
self->tx_fifo.tail += skb->len;
|
|
- self->stats.tx_bytes += skb->len;
|
|
|
|
|
|
+ dev->stats.tx_bytes += skb->len;
|
|
skb_copy_from_linear_data(skb,
|
|
skb_copy_from_linear_data(skb,
|
|
self->tx_fifo.queue[self->tx_fifo.free].start, skb->len);
|
|
self->tx_fifo.queue[self->tx_fifo.free].start, skb->len);
|
|
self->tx_fifo.len++;
|
|
self->tx_fifo.len++;
|
|
@@ -990,12 +987,12 @@ static int via_ircc_dma_xmit_complete(struct via_ircc_cb *self)
|
|
/* Clear bit, by writing 1 into it */
|
|
/* Clear bit, by writing 1 into it */
|
|
Tx_status = GetTXStatus(iobase);
|
|
Tx_status = GetTXStatus(iobase);
|
|
if (Tx_status & 0x08) {
|
|
if (Tx_status & 0x08) {
|
|
- self->stats.tx_errors++;
|
|
|
|
- self->stats.tx_fifo_errors++;
|
|
|
|
|
|
+ self->netdev->stats.tx_errors++;
|
|
|
|
+ self->netdev->stats.tx_fifo_errors++;
|
|
hwreset(self);
|
|
hwreset(self);
|
|
// how to clear underrrun ?
|
|
// how to clear underrrun ?
|
|
} else {
|
|
} else {
|
|
- self->stats.tx_packets++;
|
|
|
|
|
|
+ self->netdev->stats.tx_packets++;
|
|
ResetChip(iobase, 3);
|
|
ResetChip(iobase, 3);
|
|
ResetChip(iobase, 4);
|
|
ResetChip(iobase, 4);
|
|
}
|
|
}
|
|
@@ -1119,8 +1116,8 @@ static int via_ircc_dma_receive_complete(struct via_ircc_cb *self,
|
|
}
|
|
}
|
|
// Move to next frame
|
|
// Move to next frame
|
|
self->rx_buff.data += len;
|
|
self->rx_buff.data += len;
|
|
- self->stats.rx_bytes += len;
|
|
|
|
- self->stats.rx_packets++;
|
|
|
|
|
|
+ self->netdev->stats.rx_bytes += len;
|
|
|
|
+ self->netdev->stats.rx_packets++;
|
|
skb->dev = self->netdev;
|
|
skb->dev = self->netdev;
|
|
skb_reset_mac_header(skb);
|
|
skb_reset_mac_header(skb);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
@@ -1180,7 +1177,7 @@ F01_E */
|
|
*/
|
|
*/
|
|
if ((skb == NULL) || (skb->data == NULL)
|
|
if ((skb == NULL) || (skb->data == NULL)
|
|
|| (self->rx_buff.data == NULL) || (len < 6)) {
|
|
|| (self->rx_buff.data == NULL) || (len < 6)) {
|
|
- self->stats.rx_dropped++;
|
|
|
|
|
|
+ self->netdev->stats.rx_dropped++;
|
|
return TRUE;
|
|
return TRUE;
|
|
}
|
|
}
|
|
skb_reserve(skb, 1);
|
|
skb_reserve(skb, 1);
|
|
@@ -1192,8 +1189,8 @@ F01_E */
|
|
|
|
|
|
// Move to next frame
|
|
// Move to next frame
|
|
self->rx_buff.data += len;
|
|
self->rx_buff.data += len;
|
|
- self->stats.rx_bytes += len;
|
|
|
|
- self->stats.rx_packets++;
|
|
|
|
|
|
+ self->netdev->stats.rx_bytes += len;
|
|
|
|
+ self->netdev->stats.rx_packets++;
|
|
skb->dev = self->netdev;
|
|
skb->dev = self->netdev;
|
|
skb_reset_mac_header(skb);
|
|
skb_reset_mac_header(skb);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
@@ -1220,13 +1217,13 @@ static int upload_rxdata(struct via_ircc_cb *self, int iobase)
|
|
IRDA_DEBUG(2, "%s(): len=%x\n", __func__, len);
|
|
IRDA_DEBUG(2, "%s(): len=%x\n", __func__, len);
|
|
|
|
|
|
if ((len - 4) < 2) {
|
|
if ((len - 4) < 2) {
|
|
- self->stats.rx_dropped++;
|
|
|
|
|
|
+ self->netdev->stats.rx_dropped++;
|
|
return FALSE;
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
|
|
skb = dev_alloc_skb(len + 1);
|
|
skb = dev_alloc_skb(len + 1);
|
|
if (skb == NULL) {
|
|
if (skb == NULL) {
|
|
- self->stats.rx_dropped++;
|
|
|
|
|
|
+ self->netdev->stats.rx_dropped++;
|
|
return FALSE;
|
|
return FALSE;
|
|
}
|
|
}
|
|
skb_reserve(skb, 1);
|
|
skb_reserve(skb, 1);
|
|
@@ -1238,8 +1235,8 @@ static int upload_rxdata(struct via_ircc_cb *self, int iobase)
|
|
st_fifo->tail = 0;
|
|
st_fifo->tail = 0;
|
|
// Move to next frame
|
|
// Move to next frame
|
|
self->rx_buff.data += len;
|
|
self->rx_buff.data += len;
|
|
- self->stats.rx_bytes += len;
|
|
|
|
- self->stats.rx_packets++;
|
|
|
|
|
|
+ self->netdev->stats.rx_bytes += len;
|
|
|
|
+ self->netdev->stats.rx_packets++;
|
|
skb->dev = self->netdev;
|
|
skb->dev = self->netdev;
|
|
skb_reset_mac_header(skb);
|
|
skb_reset_mac_header(skb);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
@@ -1295,7 +1292,7 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
|
|
*/
|
|
*/
|
|
if ((skb == NULL) || (skb->data == NULL)
|
|
if ((skb == NULL) || (skb->data == NULL)
|
|
|| (self->rx_buff.data == NULL) || (len < 6)) {
|
|
|| (self->rx_buff.data == NULL) || (len < 6)) {
|
|
- self->stats.rx_dropped++;
|
|
|
|
|
|
+ self->netdev->stats.rx_dropped++;
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
skb_reserve(skb, 1);
|
|
skb_reserve(skb, 1);
|
|
@@ -1307,8 +1304,8 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
|
|
|
|
|
|
// Move to next frame
|
|
// Move to next frame
|
|
self->rx_buff.data += len;
|
|
self->rx_buff.data += len;
|
|
- self->stats.rx_bytes += len;
|
|
|
|
- self->stats.rx_packets++;
|
|
|
|
|
|
+ self->netdev->stats.rx_bytes += len;
|
|
|
|
+ self->netdev->stats.rx_packets++;
|
|
skb->dev = self->netdev;
|
|
skb->dev = self->netdev;
|
|
skb_reset_mac_header(skb);
|
|
skb_reset_mac_header(skb);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
skb->protocol = htons(ETH_P_IRDA);
|
|
@@ -1523,7 +1520,7 @@ static int via_ircc_net_open(struct net_device *dev)
|
|
|
|
|
|
IRDA_ASSERT(dev != NULL, return -1;);
|
|
IRDA_ASSERT(dev != NULL, return -1;);
|
|
self = netdev_priv(dev);
|
|
self = netdev_priv(dev);
|
|
- self->stats.rx_packets = 0;
|
|
|
|
|
|
+ dev->stats.rx_packets = 0;
|
|
IRDA_ASSERT(self != NULL, return 0;);
|
|
IRDA_ASSERT(self != NULL, return 0;);
|
|
iobase = self->io.fir_base;
|
|
iobase = self->io.fir_base;
|
|
if (request_irq(self->io.irq, via_ircc_interrupt, 0, dev->name, dev)) {
|
|
if (request_irq(self->io.irq, via_ircc_interrupt, 0, dev->name, dev)) {
|
|
@@ -1660,14 +1657,6 @@ static int via_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq,
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
-static struct net_device_stats *via_ircc_net_get_stats(struct net_device
|
|
|
|
- *dev)
|
|
|
|
-{
|
|
|
|
- struct via_ircc_cb *self = netdev_priv(dev);
|
|
|
|
-
|
|
|
|
- return &self->stats;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
MODULE_AUTHOR("VIA Technologies,inc");
|
|
MODULE_AUTHOR("VIA Technologies,inc");
|
|
MODULE_DESCRIPTION("VIA IrDA Device Driver");
|
|
MODULE_DESCRIPTION("VIA IrDA Device Driver");
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_LICENSE("GPL");
|