aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/message/fusion/mptlan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/message/fusion/mptlan.c')
-rw-r--r--drivers/message/fusion/mptlan.c44
1 files changed, 17 insertions, 27 deletions
diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c
index a13f6eecd25b..c2804f26cb44 100644
--- a/drivers/message/fusion/mptlan.c
+++ b/drivers/message/fusion/mptlan.c
@@ -106,7 +106,6 @@ struct mpt_lan_priv {
106 106
107 u32 total_posted; 107 u32 total_posted;
108 u32 total_received; 108 u32 total_received;
109 struct net_device_stats stats; /* Per device statistics */
110 109
111 struct delayed_work post_buckets_task; 110 struct delayed_work post_buckets_task;
112 struct net_device *dev; 111 struct net_device *dev;
@@ -548,15 +547,6 @@ mpt_lan_close(struct net_device *dev)
548} 547}
549 548
550/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 549/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
551static struct net_device_stats *
552mpt_lan_get_stats(struct net_device *dev)
553{
554 struct mpt_lan_priv *priv = netdev_priv(dev);
555
556 return (struct net_device_stats *) &priv->stats;
557}
558
559/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
560static int 550static int
561mpt_lan_change_mtu(struct net_device *dev, int new_mtu) 551mpt_lan_change_mtu(struct net_device *dev, int new_mtu)
562{ 552{
@@ -594,8 +584,8 @@ mpt_lan_send_turbo(struct net_device *dev, u32 tmsg)
594 ctx = GET_LAN_BUFFER_CONTEXT(tmsg); 584 ctx = GET_LAN_BUFFER_CONTEXT(tmsg);
595 sent = priv->SendCtl[ctx].skb; 585 sent = priv->SendCtl[ctx].skb;
596 586
597 priv->stats.tx_packets++; 587 dev->stats.tx_packets++;
598 priv->stats.tx_bytes += sent->len; 588 dev->stats.tx_bytes += sent->len;
599 589
600 dioprintk((KERN_INFO MYNAM ": %s/%s: @%s, skb %p sent.\n", 590 dioprintk((KERN_INFO MYNAM ": %s/%s: @%s, skb %p sent.\n",
601 IOC_AND_NETDEV_NAMES_s_s(dev), 591 IOC_AND_NETDEV_NAMES_s_s(dev),
@@ -636,7 +626,7 @@ mpt_lan_send_reply(struct net_device *dev, LANSendReply_t *pSendRep)
636 626
637 switch (le16_to_cpu(pSendRep->IOCStatus) & MPI_IOCSTATUS_MASK) { 627 switch (le16_to_cpu(pSendRep->IOCStatus) & MPI_IOCSTATUS_MASK) {
638 case MPI_IOCSTATUS_SUCCESS: 628 case MPI_IOCSTATUS_SUCCESS:
639 priv->stats.tx_packets += count; 629 dev->stats.tx_packets += count;
640 break; 630 break;
641 631
642 case MPI_IOCSTATUS_LAN_CANCELED: 632 case MPI_IOCSTATUS_LAN_CANCELED:
@@ -644,13 +634,13 @@ mpt_lan_send_reply(struct net_device *dev, LANSendReply_t *pSendRep)
644 break; 634 break;
645 635
646 case MPI_IOCSTATUS_INVALID_SGL: 636 case MPI_IOCSTATUS_INVALID_SGL:
647 priv->stats.tx_errors += count; 637 dev->stats.tx_errors += count;
648 printk (KERN_ERR MYNAM ": %s/%s: ERROR - Invalid SGL sent to IOC!\n", 638 printk (KERN_ERR MYNAM ": %s/%s: ERROR - Invalid SGL sent to IOC!\n",
649 IOC_AND_NETDEV_NAMES_s_s(dev)); 639 IOC_AND_NETDEV_NAMES_s_s(dev));
650 goto out; 640 goto out;
651 641
652 default: 642 default:
653 priv->stats.tx_errors += count; 643 dev->stats.tx_errors += count;
654 break; 644 break;
655 } 645 }
656 646
@@ -661,7 +651,7 @@ mpt_lan_send_reply(struct net_device *dev, LANSendReply_t *pSendRep)
661 ctx = GET_LAN_BUFFER_CONTEXT(le32_to_cpu(*pContext)); 651 ctx = GET_LAN_BUFFER_CONTEXT(le32_to_cpu(*pContext));
662 652
663 sent = priv->SendCtl[ctx].skb; 653 sent = priv->SendCtl[ctx].skb;
664 priv->stats.tx_bytes += sent->len; 654 dev->stats.tx_bytes += sent->len;
665 655
666 dioprintk((KERN_INFO MYNAM ": %s/%s: @%s, skb %p sent.\n", 656 dioprintk((KERN_INFO MYNAM ": %s/%s: @%s, skb %p sent.\n",
667 IOC_AND_NETDEV_NAMES_s_s(dev), 657 IOC_AND_NETDEV_NAMES_s_s(dev),
@@ -842,8 +832,8 @@ mpt_lan_receive_skb(struct net_device *dev, struct sk_buff *skb)
842 "delivered to upper level.\n", 832 "delivered to upper level.\n",
843 IOC_AND_NETDEV_NAMES_s_s(dev), skb->len)); 833 IOC_AND_NETDEV_NAMES_s_s(dev), skb->len));
844 834
845 priv->stats.rx_bytes += skb->len; 835 dev->stats.rx_bytes += skb->len;
846 priv->stats.rx_packets++; 836 dev->stats.rx_packets++;
847 837
848 skb->dev = dev; 838 skb->dev = dev;
849 netif_rx(skb); 839 netif_rx(skb);
@@ -1308,6 +1298,14 @@ mpt_lan_post_receive_buckets_work(struct work_struct *work)
1308 post_buckets_task.work)); 1298 post_buckets_task.work));
1309} 1299}
1310 1300
1301static const struct net_device_ops mpt_netdev_ops = {
1302 .ndo_open = mpt_lan_open,
1303 .ndo_stop = mpt_lan_close,
1304 .ndo_start_xmit = mpt_lan_sdu_send,
1305 .ndo_change_mtu = mpt_lan_change_mtu,
1306 .ndo_tx_timeout = mpt_lan_tx_timeout,
1307};
1308
1311/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 1309/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
1312static struct net_device * 1310static struct net_device *
1313mpt_register_lan_device (MPT_ADAPTER *mpt_dev, int pnum) 1311mpt_register_lan_device (MPT_ADAPTER *mpt_dev, int pnum)
@@ -1372,15 +1370,7 @@ mpt_register_lan_device (MPT_ADAPTER *mpt_dev, int pnum)
1372 priv->tx_max_out = (tx_max_out_p <= MPT_TX_MAX_OUT_LIM) ? 1370 priv->tx_max_out = (tx_max_out_p <= MPT_TX_MAX_OUT_LIM) ?
1373 tx_max_out_p : MPT_TX_MAX_OUT_LIM; 1371 tx_max_out_p : MPT_TX_MAX_OUT_LIM;
1374 1372
1375 dev->open = mpt_lan_open; 1373 dev->netdev_ops = &mpt_netdev_ops;
1376 dev->stop = mpt_lan_close;
1377 dev->get_stats = mpt_lan_get_stats;
1378 dev->set_multicast_list = NULL;
1379 dev->change_mtu = mpt_lan_change_mtu;
1380 dev->hard_start_xmit = mpt_lan_sdu_send;
1381
1382/* Not in 2.3.42. Need 2.3.45+ */
1383 dev->tx_timeout = mpt_lan_tx_timeout;
1384 dev->watchdog_timeo = MPT_LAN_TX_TIMEOUT; 1374 dev->watchdog_timeo = MPT_LAN_TX_TIMEOUT;
1385 1375
1386 dlprintk((KERN_INFO MYNAM ": Finished registering dev " 1376 dlprintk((KERN_INFO MYNAM ": Finished registering dev "