aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/message/fusion
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/message/fusion')
-rw-r--r--drivers/message/fusion/mptbase.c15
-rw-r--r--drivers/message/fusion/mptctl.c5
-rw-r--r--drivers/message/fusion/mptlan.c66
-rw-r--r--drivers/message/fusion/mptlan.h2
4 files changed, 36 insertions, 52 deletions
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index d6a0074b9dc3..c4e8b9aa3827 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -952,7 +952,6 @@ mpt_put_msg_frame_hi_pri(u8 cb_idx, MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf)
952/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 952/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
953/** 953/**
954 * mpt_free_msg_frame - Place MPT request frame back on FreeQ. 954 * mpt_free_msg_frame - Place MPT request frame back on FreeQ.
955 * @handle: Handle of registered MPT protocol driver
956 * @ioc: Pointer to MPT adapter structure 955 * @ioc: Pointer to MPT adapter structure
957 * @mf: Pointer to MPT request frame 956 * @mf: Pointer to MPT request frame
958 * 957 *
@@ -4563,7 +4562,7 @@ WaitForDoorbellReply(MPT_ADAPTER *ioc, int howlong, int sleepFlag)
4563 failcnt++; 4562 failcnt++;
4564 hword = le16_to_cpu(CHIPREG_READ32(&ioc->chip->Doorbell) & 0x0000FFFF); 4563 hword = le16_to_cpu(CHIPREG_READ32(&ioc->chip->Doorbell) & 0x0000FFFF);
4565 /* don't overflow our IOC hs_reply[] buffer! */ 4564 /* don't overflow our IOC hs_reply[] buffer! */
4566 if (u16cnt < sizeof(ioc->hs_reply) / sizeof(ioc->hs_reply[0])) 4565 if (u16cnt < ARRAY_SIZE(ioc->hs_reply))
4567 hs_reply[u16cnt] = hword; 4566 hs_reply[u16cnt] = hword;
4568 CHIPREG_WRITE32(&ioc->chip->IntStatus, 0); 4567 CHIPREG_WRITE32(&ioc->chip->IntStatus, 0);
4569 } 4568 }
@@ -5422,7 +5421,6 @@ mpt_raid_phys_disk_pg0(MPT_ADAPTER *ioc, u8 phys_disk_num, pRaidPhysDiskPage0_t
5422/** 5421/**
5423 * mpt_findImVolumes - Identify IDs of hidden disks and RAID Volumes 5422 * mpt_findImVolumes - Identify IDs of hidden disks and RAID Volumes
5424 * @ioc: Pointer to a Adapter Strucutre 5423 * @ioc: Pointer to a Adapter Strucutre
5425 * @portnum: IOC port number
5426 * 5424 *
5427 * Return: 5425 * Return:
5428 * 0 on success 5426 * 0 on success
@@ -6939,7 +6937,6 @@ mpt_fc_log_info(MPT_ADAPTER *ioc, u32 log_info)
6939/** 6937/**
6940 * mpt_spi_log_info - Log information returned from SCSI Parallel IOC. 6938 * mpt_spi_log_info - Log information returned from SCSI Parallel IOC.
6941 * @ioc: Pointer to MPT_ADAPTER structure 6939 * @ioc: Pointer to MPT_ADAPTER structure
6942 * @mr: Pointer to MPT reply frame
6943 * @log_info: U32 LogInfo word from the IOC 6940 * @log_info: U32 LogInfo word from the IOC
6944 * 6941 *
6945 * Refer to lsi/sp_log.h. 6942 * Refer to lsi/sp_log.h.
@@ -7176,7 +7173,7 @@ union loginfo_type {
7176 7173
7177 sas_loginfo.loginfo = log_info; 7174 sas_loginfo.loginfo = log_info;
7178 if ((sas_loginfo.dw.bus_type != 3 /*SAS*/) && 7175 if ((sas_loginfo.dw.bus_type != 3 /*SAS*/) &&
7179 (sas_loginfo.dw.originator < sizeof(originator_str)/sizeof(char*))) 7176 (sas_loginfo.dw.originator < ARRAY_SIZE(originator_str)))
7180 return; 7177 return;
7181 7178
7182 originator_desc = originator_str[sas_loginfo.dw.originator]; 7179 originator_desc = originator_str[sas_loginfo.dw.originator];
@@ -7185,21 +7182,21 @@ union loginfo_type {
7185 7182
7186 case 0: /* IOP */ 7183 case 0: /* IOP */
7187 if (sas_loginfo.dw.code < 7184 if (sas_loginfo.dw.code <
7188 sizeof(iop_code_str)/sizeof(char*)) 7185 ARRAY_SIZE(iop_code_str))
7189 code_desc = iop_code_str[sas_loginfo.dw.code]; 7186 code_desc = iop_code_str[sas_loginfo.dw.code];
7190 break; 7187 break;
7191 case 1: /* PL */ 7188 case 1: /* PL */
7192 if (sas_loginfo.dw.code < 7189 if (sas_loginfo.dw.code <
7193 sizeof(pl_code_str)/sizeof(char*)) 7190 ARRAY_SIZE(pl_code_str))
7194 code_desc = pl_code_str[sas_loginfo.dw.code]; 7191 code_desc = pl_code_str[sas_loginfo.dw.code];
7195 break; 7192 break;
7196 case 2: /* IR */ 7193 case 2: /* IR */
7197 if (sas_loginfo.dw.code >= 7194 if (sas_loginfo.dw.code >=
7198 sizeof(ir_code_str)/sizeof(char*)) 7195 ARRAY_SIZE(ir_code_str))
7199 break; 7196 break;
7200 code_desc = ir_code_str[sas_loginfo.dw.code]; 7197 code_desc = ir_code_str[sas_loginfo.dw.code];
7201 if (sas_loginfo.dw.subcode >= 7198 if (sas_loginfo.dw.subcode >=
7202 sizeof(raid_sub_code_str)/sizeof(char*)) 7199 ARRAY_SIZE(raid_sub_code_str))
7203 break; 7200 break;
7204 if (sas_loginfo.dw.code == 0) 7201 if (sas_loginfo.dw.code == 0)
7205 sub_code_desc = 7202 sub_code_desc =
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
index b89f476cd0a9..c63817117c0a 100644
--- a/drivers/message/fusion/mptctl.c
+++ b/drivers/message/fusion/mptctl.c
@@ -308,10 +308,11 @@ static void mptctl_timeout_expired (MPT_IOCTL *ioctl)
308{ 308{
309 int rc = 1; 309 int rc = 1;
310 310
311 dctlprintk(ioctl->ioc, printk(MYIOC_s_DEBUG_FMT ": Timeout Expired! Host %d\n",
312 ioctl->ioc->name, ioctl->ioc->id));
313 if (ioctl == NULL) 311 if (ioctl == NULL)
314 return; 312 return;
313 dctlprintk(ioctl->ioc,
314 printk(MYIOC_s_DEBUG_FMT ": Timeout Expired! Host %d\n",
315 ioctl->ioc->name, ioctl->ioc->id));
315 316
316 ioctl->wait_done = 0; 317 ioctl->wait_done = 0;
317 if (ioctl->reset & MPTCTL_RESET_OK) 318 if (ioctl->reset & MPTCTL_RESET_OK)
diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c
index 603ffd008c73..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),
@@ -815,7 +805,7 @@ mpt_lan_wake_post_buckets_task(struct net_device *dev, int priority)
815 * @priority: 0 = put it on the timer queue, 1 = put it on the immediate queue 805 * @priority: 0 = put it on the timer queue, 1 = put it on the immediate queue
816 */ 806 */
817{ 807{
818 struct mpt_lan_priv *priv = dev->priv; 808 struct mpt_lan_priv *priv = netdev_priv(dev);
819 809
820 if (test_and_set_bit(0, &priv->post_buckets_active) == 0) { 810 if (test_and_set_bit(0, &priv->post_buckets_active) == 0) {
821 if (priority) { 811 if (priority) {
@@ -834,7 +824,7 @@ mpt_lan_wake_post_buckets_task(struct net_device *dev, int priority)
834static int 824static int
835mpt_lan_receive_skb(struct net_device *dev, struct sk_buff *skb) 825mpt_lan_receive_skb(struct net_device *dev, struct sk_buff *skb)
836{ 826{
837 struct mpt_lan_priv *priv = dev->priv; 827 struct mpt_lan_priv *priv = netdev_priv(dev);
838 828
839 skb->protocol = mpt_lan_type_trans(skb, dev); 829 skb->protocol = mpt_lan_type_trans(skb, dev);
840 830
@@ -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);
@@ -866,7 +856,7 @@ mpt_lan_receive_skb(struct net_device *dev, struct sk_buff *skb)
866static int 856static int
867mpt_lan_receive_post_turbo(struct net_device *dev, u32 tmsg) 857mpt_lan_receive_post_turbo(struct net_device *dev, u32 tmsg)
868{ 858{
869 struct mpt_lan_priv *priv = dev->priv; 859 struct mpt_lan_priv *priv = netdev_priv(dev);
870 MPT_ADAPTER *mpt_dev = priv->mpt_dev; 860 MPT_ADAPTER *mpt_dev = priv->mpt_dev;
871 struct sk_buff *skb, *old_skb; 861 struct sk_buff *skb, *old_skb;
872 unsigned long flags; 862 unsigned long flags;
@@ -921,7 +911,7 @@ static int
921mpt_lan_receive_post_free(struct net_device *dev, 911mpt_lan_receive_post_free(struct net_device *dev,
922 LANReceivePostReply_t *pRecvRep) 912 LANReceivePostReply_t *pRecvRep)
923{ 913{
924 struct mpt_lan_priv *priv = dev->priv; 914 struct mpt_lan_priv *priv = netdev_priv(dev);
925 MPT_ADAPTER *mpt_dev = priv->mpt_dev; 915 MPT_ADAPTER *mpt_dev = priv->mpt_dev;
926 unsigned long flags; 916 unsigned long flags;
927 struct sk_buff *skb; 917 struct sk_buff *skb;
@@ -976,7 +966,7 @@ static int
976mpt_lan_receive_post_reply(struct net_device *dev, 966mpt_lan_receive_post_reply(struct net_device *dev,
977 LANReceivePostReply_t *pRecvRep) 967 LANReceivePostReply_t *pRecvRep)
978{ 968{
979 struct mpt_lan_priv *priv = dev->priv; 969 struct mpt_lan_priv *priv = netdev_priv(dev);
980 MPT_ADAPTER *mpt_dev = priv->mpt_dev; 970 MPT_ADAPTER *mpt_dev = priv->mpt_dev;
981 struct sk_buff *skb, *old_skb; 971 struct sk_buff *skb, *old_skb;
982 unsigned long flags; 972 unsigned long flags;
@@ -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 "
@@ -1427,11 +1417,9 @@ mptlan_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1427 printk(KERN_INFO MYNAM ": %s: Fusion MPT LAN device " 1417 printk(KERN_INFO MYNAM ": %s: Fusion MPT LAN device "
1428 "registered as '%s'\n", ioc->name, dev->name); 1418 "registered as '%s'\n", ioc->name, dev->name);
1429 printk(KERN_INFO MYNAM ": %s/%s: " 1419 printk(KERN_INFO MYNAM ": %s/%s: "
1430 "LanAddr = %02X:%02X:%02X:%02X:%02X:%02X\n", 1420 "LanAddr = %pM\n",
1431 IOC_AND_NETDEV_NAMES_s_s(dev), 1421 IOC_AND_NETDEV_NAMES_s_s(dev),
1432 dev->dev_addr[0], dev->dev_addr[1], 1422 dev->dev_addr);
1433 dev->dev_addr[2], dev->dev_addr[3],
1434 dev->dev_addr[4], dev->dev_addr[5]);
1435 1423
1436 ioc->netdev = dev; 1424 ioc->netdev = dev;
1437 1425
@@ -1516,9 +1504,8 @@ mpt_lan_type_trans(struct sk_buff *skb, struct net_device *dev)
1516 1504
1517 printk (KERN_WARNING MYNAM ": %s: WARNING - Broadcast swap F/W bug detected!\n", 1505 printk (KERN_WARNING MYNAM ": %s: WARNING - Broadcast swap F/W bug detected!\n",
1518 NETDEV_PTR_TO_IOC_NAME_s(dev)); 1506 NETDEV_PTR_TO_IOC_NAME_s(dev));
1519 printk (KERN_WARNING MYNAM ": Please update sender @ MAC_addr = %02x:%02x:%02x:%02x:%02x:%02x\n", 1507 printk (KERN_WARNING MYNAM ": Please update sender @ MAC_addr = %pM\n",
1520 fch->saddr[0], fch->saddr[1], fch->saddr[2], 1508 fch->saddr);
1521 fch->saddr[3], fch->saddr[4], fch->saddr[5]);
1522 } 1509 }
1523 1510
1524 if (*fch->daddr & 1) { 1511 if (*fch->daddr & 1) {
@@ -1537,7 +1524,6 @@ mpt_lan_type_trans(struct sk_buff *skb, struct net_device *dev)
1537 1524
1538 fcllc = (struct fcllc *)skb->data; 1525 fcllc = (struct fcllc *)skb->data;
1539 1526
1540
1541 /* Strip the SNAP header from ARP packets since we don't 1527 /* Strip the SNAP header from ARP packets since we don't
1542 * pass them through to the 802.2/SNAP layers. 1528 * pass them through to the 802.2/SNAP layers.
1543 */ 1529 */
diff --git a/drivers/message/fusion/mptlan.h b/drivers/message/fusion/mptlan.h
index 33927ee7dc3b..c171afa93239 100644
--- a/drivers/message/fusion/mptlan.h
+++ b/drivers/message/fusion/mptlan.h
@@ -122,7 +122,7 @@ MODULE_DESCRIPTION(LANAME);
122#define dlprintk(x) 122#define dlprintk(x)
123#endif 123#endif
124 124
125#define NETDEV_TO_LANPRIV_PTR(d) ((struct mpt_lan_priv *)(d)->priv) 125#define NETDEV_TO_LANPRIV_PTR(d) ((struct mpt_lan_priv *)netdev_priv(d))
126#define NETDEV_PTR_TO_IOC_NAME_s(d) (NETDEV_TO_LANPRIV_PTR(d)->mpt_dev->name) 126#define NETDEV_PTR_TO_IOC_NAME_s(d) (NETDEV_TO_LANPRIV_PTR(d)->mpt_dev->name)
127#define IOC_AND_NETDEV_NAMES_s_s(d) NETDEV_PTR_TO_IOC_NAME_s(d), (d)->name 127#define IOC_AND_NETDEV_NAMES_s_s(d) NETDEV_PTR_TO_IOC_NAME_s(d), (d)->name
128 128