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.c32
1 files changed, 11 insertions, 21 deletions
diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c
index 3da4c37846ec..7950fc678ed1 100644
--- a/drivers/message/fusion/mptlan.c
+++ b/drivers/message/fusion/mptlan.c
@@ -1,10 +1,10 @@
1/* 1/*
2 * linux/drivers/message/fusion/mptlan.c 2 * linux/drivers/message/fusion/mptlan.c
3 * IP Over Fibre Channel device driver. 3 * IP Over Fibre Channel device driver.
4 * For use with LSI Logic Fibre Channel PCI chip/adapters 4 * For use with LSI Fibre Channel PCI chip/adapters
5 * running LSI Logic Fusion MPT (Message Passing Technology) firmware. 5 * running LSI Fusion MPT (Message Passing Technology) firmware.
6 * 6 *
7 * Copyright (c) 2000-2007 LSI Logic Corporation 7 * Copyright (c) 2000-2007 LSI Corporation
8 * (mailto:DL-MPTFusionLinux@lsi.com) 8 * (mailto:DL-MPTFusionLinux@lsi.com)
9 * 9 *
10 */ 10 */
@@ -154,7 +154,7 @@ static unsigned short mpt_lan_type_trans(struct sk_buff *skb,
154/* 154/*
155 * Fusion MPT LAN private data 155 * Fusion MPT LAN private data
156 */ 156 */
157static int LanCtx = -1; 157static u8 LanCtx = MPT_MAX_PROTOCOL_DRIVERS;
158 158
159static u32 max_buckets_out = 127; 159static u32 max_buckets_out = 127;
160static u32 tx_max_out_p = 127 - 16; 160static u32 tx_max_out_p = 127 - 16;
@@ -165,12 +165,6 @@ DEFINE_RWLOCK(bad_naa_lock);
165#endif 165#endif
166 166
167/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 167/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
168/*
169 * Fusion MPT LAN external data
170 */
171extern int mpt_lan_index;
172
173/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
174/** 168/**
175 * lan_reply - Handle all data sent from the hardware. 169 * lan_reply - Handle all data sent from the hardware.
176 * @ioc: Pointer to MPT_ADAPTER structure 170 * @ioc: Pointer to MPT_ADAPTER structure
@@ -1230,6 +1224,8 @@ mpt_lan_post_receive_buckets(struct mpt_lan_priv *priv)
1230 } 1224 }
1231 pRecvReq = (LANReceivePostRequest_t *) mf; 1225 pRecvReq = (LANReceivePostRequest_t *) mf;
1232 1226
1227 i = le16_to_cpu(mf->u.frame.hwhdr.msgctxu.fld.req_idx);
1228 mpt_dev->RequestNB[i] = 0;
1233 count = buckets; 1229 count = buckets;
1234 if (count > max) 1230 if (count > max)
1235 count = max; 1231 count = max;
@@ -1351,10 +1347,11 @@ mpt_lan_post_receive_buckets_work(struct work_struct *work)
1351static struct net_device * 1347static struct net_device *
1352mpt_register_lan_device (MPT_ADAPTER *mpt_dev, int pnum) 1348mpt_register_lan_device (MPT_ADAPTER *mpt_dev, int pnum)
1353{ 1349{
1354 struct net_device *dev = alloc_fcdev(sizeof(struct mpt_lan_priv)); 1350 struct net_device *dev;
1355 struct mpt_lan_priv *priv = NULL; 1351 struct mpt_lan_priv *priv;
1356 u8 HWaddr[FC_ALEN], *a; 1352 u8 HWaddr[FC_ALEN], *a;
1357 1353
1354 dev = alloc_fcdev(sizeof(struct mpt_lan_priv));
1358 if (!dev) 1355 if (!dev)
1359 return NULL; 1356 return NULL;
1360 1357
@@ -1366,7 +1363,6 @@ mpt_register_lan_device (MPT_ADAPTER *mpt_dev, int pnum)
1366 priv->mpt_dev = mpt_dev; 1363 priv->mpt_dev = mpt_dev;
1367 priv->pnum = pnum; 1364 priv->pnum = pnum;
1368 1365
1369 memset(&priv->post_buckets_task, 0, sizeof(priv->post_buckets_task));
1370 INIT_DELAYED_WORK(&priv->post_buckets_task, 1366 INIT_DELAYED_WORK(&priv->post_buckets_task,
1371 mpt_lan_post_receive_buckets_work); 1367 mpt_lan_post_receive_buckets_work);
1372 priv->post_buckets_active = 0; 1368 priv->post_buckets_active = 0;
@@ -1391,8 +1387,6 @@ mpt_register_lan_device (MPT_ADAPTER *mpt_dev, int pnum)
1391 spin_lock_init(&priv->txfidx_lock); 1387 spin_lock_init(&priv->txfidx_lock);
1392 spin_lock_init(&priv->rxfidx_lock); 1388 spin_lock_init(&priv->rxfidx_lock);
1393 1389
1394 memset(&priv->stats, 0, sizeof(priv->stats));
1395
1396 /* Grab pre-fetched LANPage1 stuff. :-) */ 1390 /* Grab pre-fetched LANPage1 stuff. :-) */
1397 a = (u8 *) &mpt_dev->lan_cnfg_page1.HardwareAddressLow; 1391 a = (u8 *) &mpt_dev->lan_cnfg_page1.HardwareAddressLow;
1398 1392
@@ -1508,9 +1502,6 @@ static int __init mpt_lan_init (void)
1508 return -EBUSY; 1502 return -EBUSY;
1509 } 1503 }
1510 1504
1511 /* Set the callback index to be used by driver core for turbo replies */
1512 mpt_lan_index = LanCtx;
1513
1514 dlprintk((KERN_INFO MYNAM ": assigned context of %d\n", LanCtx)); 1505 dlprintk((KERN_INFO MYNAM ": assigned context of %d\n", LanCtx));
1515 1506
1516 if (mpt_reset_register(LanCtx, mpt_lan_ioc_reset)) { 1507 if (mpt_reset_register(LanCtx, mpt_lan_ioc_reset)) {
@@ -1531,10 +1522,9 @@ static void __exit mpt_lan_exit(void)
1531 mpt_device_driver_deregister(MPTLAN_DRIVER); 1522 mpt_device_driver_deregister(MPTLAN_DRIVER);
1532 mpt_reset_deregister(LanCtx); 1523 mpt_reset_deregister(LanCtx);
1533 1524
1534 if (LanCtx >= 0) { 1525 if (LanCtx) {
1535 mpt_deregister(LanCtx); 1526 mpt_deregister(LanCtx);
1536 LanCtx = -1; 1527 LanCtx = MPT_MAX_PROTOCOL_DRIVERS;
1537 mpt_lan_index = 0;
1538 } 1528 }
1539} 1529}
1540 1530