Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: slicoss: remove slic_spinlock wrapper

As per TODO. This commit introduces no functional changes.

Signed-off-by: David Matlack <dmatlack@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

David Matlack and committed by
Greg Kroah-Hartman
eafe6002 1645b55b

+65 -80
-1
drivers/staging/slicoss/TODO
··· 25 25 - state variables for things that are 26 26 easily available and shouldn't be kept in card structure, cardnum, ... 27 27 slotnumber, events, ... 28 - - get rid of slic_spinlock wrapper 29 28 - volatile == bad design => bad code 30 29 - locking too fine grained, not designed just throw more locks 31 30 at problem
+7 -12
drivers/staging/slicoss/slic.h
··· 56 56 static u32 GBRcvUCodeLen = 512; 57 57 #define SECTION_SIZE 65536 58 58 59 - struct slic_spinlock { 60 - spinlock_t lock; 61 - unsigned long flags; 62 - }; 63 - 64 59 #define SLIC_RSPQ_PAGES_GB 10 65 60 #define SLIC_RSPQ_BUFSINPAGE (PAGE_SIZE / SLIC_RSPBUF_SIZE) 66 61 ··· 160 165 struct slic_hostcmd *head; 161 166 struct slic_hostcmd *tail; 162 167 int count; 163 - struct slic_spinlock lock; 168 + spinlock_t lock; 164 169 }; 165 170 166 171 #define SLIC_MAX_CARDS 32 ··· 341 346 }; 342 347 343 348 struct base_driver { 344 - struct slic_spinlock driver_lock; 349 + spinlock_t driver_lock; 345 350 u32 num_slic_cards; 346 351 u32 num_slic_ports; 347 352 u32 num_slic_ports_active; ··· 396 401 uint card_size; 397 402 uint chipid; 398 403 struct net_device *netdev; 399 - struct slic_spinlock adapter_lock; 400 - struct slic_spinlock reset_lock; 404 + spinlock_t adapter_lock; 405 + spinlock_t reset_lock; 401 406 struct pci_dev *pcidev; 402 407 uint busnumber; 403 408 uint slotnumber; ··· 436 441 u32 pingtimerset; 437 442 struct timer_list loadtimer; 438 443 u32 loadtimerset; 439 - struct slic_spinlock upr_lock; 440 - struct slic_spinlock bit64reglock; 444 + spinlock_t upr_lock; 445 + spinlock_t bit64reglock; 441 446 struct slic_rspqueue rspqueue; 442 447 struct slic_rcvqueue rcvqueue; 443 448 struct slic_cmdqueue cmdq_free; ··· 452 457 /* Free object handles*/ 453 458 struct slic_handle *pfree_slic_handles; 454 459 /* Object handle list lock*/ 455 - struct slic_spinlock handle_lock; 460 + spinlock_t handle_lock; 456 461 ushort slic_handle_ix; 457 462 458 463 u32 xmitq_full;
+58 -67
drivers/staging/slicoss/slicoss.c
··· 144 144 u32 value, void __iomem *regh, u32 paddrh, 145 145 bool flush) 146 146 { 147 - spin_lock_irqsave(&adapter->bit64reglock.lock, 148 - adapter->bit64reglock.flags); 147 + unsigned long flags; 148 + 149 + spin_lock_irqsave(&adapter->bit64reglock, flags); 149 150 if (paddrh != adapter->curaddrupper) { 150 151 adapter->curaddrupper = paddrh; 151 152 writel(paddrh, regh); ··· 154 153 writel(value, reg); 155 154 if (flush) 156 155 mb(); 157 - spin_unlock_irqrestore(&adapter->bit64reglock.lock, 158 - adapter->bit64reglock.flags); 156 + spin_unlock_irqrestore(&adapter->bit64reglock, flags); 159 157 } 160 158 161 159 static void slic_mcast_set_bit(struct adapter *adapter, char *address) ··· 936 936 u32 upr_data_h, 937 937 u32 upr_buffer, u32 upr_buffer_h) 938 938 { 939 + unsigned long flags; 939 940 int rc; 940 941 941 - spin_lock_irqsave(&adapter->upr_lock.lock, adapter->upr_lock.flags); 942 + spin_lock_irqsave(&adapter->upr_lock, flags); 942 943 rc = slic_upr_queue_request(adapter, 943 944 upr_request, 944 945 upr_data, ··· 949 948 950 949 slic_upr_start(adapter); 951 950 err_unlock_irq: 952 - spin_unlock_irqrestore(&adapter->upr_lock.lock, 953 - adapter->upr_lock.flags); 951 + spin_unlock_irqrestore(&adapter->upr_lock, flags); 954 952 return rc; 955 953 } 956 954 ··· 1029 1029 { 1030 1030 struct sliccard *card = adapter->card; 1031 1031 struct slic_upr *upr; 1032 + unsigned long flags; 1032 1033 1033 - spin_lock_irqsave(&adapter->upr_lock.lock, adapter->upr_lock.flags); 1034 + spin_lock_irqsave(&adapter->upr_lock, flags); 1034 1035 upr = adapter->upr_list; 1035 1036 if (!upr) { 1036 - spin_unlock_irqrestore(&adapter->upr_lock.lock, 1037 - adapter->upr_lock.flags); 1037 + spin_unlock_irqrestore(&adapter->upr_lock, flags); 1038 1038 return; 1039 1039 } 1040 1040 adapter->upr_list = upr->next; ··· 1127 1127 } 1128 1128 kfree(upr); 1129 1129 slic_upr_start(adapter); 1130 - spin_unlock_irqrestore(&adapter->upr_lock.lock, 1131 - adapter->upr_lock.flags); 1130 + spin_unlock_irqrestore(&adapter->upr_lock, flags); 1132 1131 } 1133 1132 1134 1133 static int slic_config_get(struct adapter *adapter, u32 config, u32 config_h) ··· 1309 1310 u32 phys_addrl; 1310 1311 u32 phys_addrh; 1311 1312 struct slic_handle *pslic_handle; 1313 + unsigned long flags; 1312 1314 1313 1315 cmdaddr = page; 1314 1316 cmd = (struct slic_hostcmd *)cmdaddr; ··· 1324 1324 while ((cmdcnt < SLIC_CMDQ_CMDSINPAGE) && 1325 1325 (adapter->slic_handle_ix < 256)) { 1326 1326 /* Allocate and initialize a SLIC_HANDLE for this command */ 1327 - spin_lock_irqsave(&adapter->handle_lock.lock, 1328 - adapter->handle_lock.flags); 1327 + spin_lock_irqsave(&adapter->handle_lock, flags); 1329 1328 pslic_handle = adapter->pfree_slic_handles; 1330 1329 adapter->pfree_slic_handles = pslic_handle->next; 1331 - spin_unlock_irqrestore(&adapter->handle_lock.lock, 1332 - adapter->handle_lock.flags); 1330 + spin_unlock_irqrestore(&adapter->handle_lock, flags); 1333 1331 pslic_handle->type = SLIC_HANDLE_CMD; 1334 1332 pslic_handle->address = (void *) cmd; 1335 1333 pslic_handle->offset = (ushort) adapter->slic_handle_ix++; ··· 1354 1356 tail->next_all = cmdq->head; 1355 1357 cmdq->head = prev; 1356 1358 cmdq = &adapter->cmdq_free; 1357 - spin_lock_irqsave(&cmdq->lock.lock, cmdq->lock.flags); 1359 + spin_lock_irqsave(&cmdq->lock, flags); 1358 1360 cmdq->count += cmdcnt; /* SLIC_CMDQ_CMDSINPAGE; mooktodo */ 1359 1361 tail->next = cmdq->head; 1360 1362 cmdq->head = prev; 1361 - spin_unlock_irqrestore(&cmdq->lock.lock, cmdq->lock.flags); 1363 + spin_unlock_irqrestore(&cmdq->lock, flags); 1362 1364 } 1363 1365 1364 1366 static int slic_cmdq_init(struct adapter *adapter) ··· 1369 1371 memset(&adapter->cmdq_all, 0, sizeof(struct slic_cmdqueue)); 1370 1372 memset(&adapter->cmdq_free, 0, sizeof(struct slic_cmdqueue)); 1371 1373 memset(&adapter->cmdq_done, 0, sizeof(struct slic_cmdqueue)); 1372 - spin_lock_init(&adapter->cmdq_all.lock.lock); 1373 - spin_lock_init(&adapter->cmdq_free.lock.lock); 1374 - spin_lock_init(&adapter->cmdq_done.lock.lock); 1374 + spin_lock_init(&adapter->cmdq_all.lock); 1375 + spin_lock_init(&adapter->cmdq_free.lock); 1376 + spin_lock_init(&adapter->cmdq_done.lock); 1375 1377 memset(&adapter->cmdqmem, 0, sizeof(struct slic_cmdqmem)); 1376 1378 adapter->slic_handle_ix = 1; 1377 1379 for (i = 0; i < SLIC_CMDQ_INITPAGES; i++) { ··· 1392 1394 struct slic_hostcmd *hcmd; 1393 1395 struct sk_buff *skb; 1394 1396 u32 outstanding; 1397 + unsigned long flags; 1395 1398 1396 - spin_lock_irqsave(&adapter->cmdq_free.lock.lock, 1397 - adapter->cmdq_free.lock.flags); 1398 - spin_lock_irqsave(&adapter->cmdq_done.lock.lock, 1399 - adapter->cmdq_done.lock.flags); 1399 + spin_lock_irqsave(&adapter->cmdq_free.lock, flags); 1400 + spin_lock_irqsave(&adapter->cmdq_done.lock, flags); 1400 1401 outstanding = adapter->cmdq_all.count - adapter->cmdq_done.count; 1401 1402 outstanding -= adapter->cmdq_free.count; 1402 1403 hcmd = adapter->cmdq_all.head; ··· 1426 1429 "free_count %d != all count %d\n", 1427 1430 adapter->cmdq_free.count, adapter->cmdq_all.count); 1428 1431 } 1429 - spin_unlock_irqrestore(&adapter->cmdq_done.lock.lock, 1430 - adapter->cmdq_done.lock.flags); 1431 - spin_unlock_irqrestore(&adapter->cmdq_free.lock.lock, 1432 - adapter->cmdq_free.lock.flags); 1432 + spin_unlock_irqrestore(&adapter->cmdq_done.lock, flags); 1433 + spin_unlock_irqrestore(&adapter->cmdq_free.lock, flags); 1433 1434 } 1434 1435 1435 1436 static void slic_cmdq_getdone(struct adapter *adapter) 1436 1437 { 1437 1438 struct slic_cmdqueue *done_cmdq = &adapter->cmdq_done; 1438 1439 struct slic_cmdqueue *free_cmdq = &adapter->cmdq_free; 1440 + unsigned long flags; 1439 1441 1440 - spin_lock_irqsave(&done_cmdq->lock.lock, done_cmdq->lock.flags); 1442 + spin_lock_irqsave(&done_cmdq->lock, flags); 1441 1443 1442 1444 free_cmdq->head = done_cmdq->head; 1443 1445 free_cmdq->count = done_cmdq->count; 1444 1446 done_cmdq->head = NULL; 1445 1447 done_cmdq->tail = NULL; 1446 1448 done_cmdq->count = 0; 1447 - spin_unlock_irqrestore(&done_cmdq->lock.lock, done_cmdq->lock.flags); 1449 + spin_unlock_irqrestore(&done_cmdq->lock, flags); 1448 1450 } 1449 1451 1450 1452 static struct slic_hostcmd *slic_cmdq_getfree(struct adapter *adapter) 1451 1453 { 1452 1454 struct slic_cmdqueue *cmdq = &adapter->cmdq_free; 1453 1455 struct slic_hostcmd *cmd = NULL; 1456 + unsigned long flags; 1454 1457 1455 1458 lock_and_retry: 1456 - spin_lock_irqsave(&cmdq->lock.lock, cmdq->lock.flags); 1459 + spin_lock_irqsave(&cmdq->lock, flags); 1457 1460 retry: 1458 1461 cmd = cmdq->head; 1459 1462 if (cmd) { 1460 1463 cmdq->head = cmd->next; 1461 1464 cmdq->count--; 1462 - spin_unlock_irqrestore(&cmdq->lock.lock, cmdq->lock.flags); 1465 + spin_unlock_irqrestore(&cmdq->lock, flags); 1463 1466 } else { 1464 1467 slic_cmdq_getdone(adapter); 1465 1468 cmd = cmdq->head; ··· 1468 1471 } else { 1469 1472 u32 *pageaddr; 1470 1473 1471 - spin_unlock_irqrestore(&cmdq->lock.lock, 1472 - cmdq->lock.flags); 1474 + spin_unlock_irqrestore(&cmdq->lock, flags); 1473 1475 pageaddr = slic_cmdqmem_addpage(adapter); 1474 1476 if (pageaddr) { 1475 1477 slic_cmdq_addcmdpage(adapter, pageaddr); ··· 1484 1488 { 1485 1489 struct slic_cmdqueue *cmdq = &adapter->cmdq_done; 1486 1490 1487 - spin_lock(&cmdq->lock.lock); 1491 + spin_lock(&cmdq->lock); 1488 1492 cmd->busy = 0; 1489 1493 cmd->next = cmdq->head; 1490 1494 cmdq->head = cmd; 1491 1495 cmdq->count++; 1492 1496 if ((adapter->xmitq_full) && (cmdq->count > 10)) 1493 1497 netif_wake_queue(adapter->netdev); 1494 - spin_unlock(&cmdq->lock.lock); 1498 + spin_unlock(&cmdq->lock); 1495 1499 } 1496 1500 1497 1501 static int slic_rcvqueue_fill(struct adapter *adapter) ··· 2246 2250 adapter->rcv_unicasts = 0; 2247 2251 } 2248 2252 2249 - static int slic_adapter_allocresources(struct adapter *adapter) 2253 + static int slic_adapter_allocresources(struct adapter *adapter, 2254 + unsigned long *flags) 2250 2255 { 2251 2256 if (!adapter->intrregistered) { 2252 2257 int retval; 2253 2258 2254 - spin_unlock_irqrestore(&slic_global.driver_lock.lock, 2255 - slic_global.driver_lock.flags); 2259 + spin_unlock_irqrestore(&slic_global.driver_lock, *flags); 2256 2260 2257 2261 retval = request_irq(adapter->netdev->irq, 2258 2262 &slic_interrupt, 2259 2263 IRQF_SHARED, 2260 2264 adapter->netdev->name, adapter->netdev); 2261 2265 2262 - spin_lock_irqsave(&slic_global.driver_lock.lock, 2263 - slic_global.driver_lock.flags); 2266 + spin_lock_irqsave(&slic_global.driver_lock, *flags); 2264 2267 2265 2268 if (retval) { 2266 2269 dev_err(&adapter->netdev->dev, ··· 2278 2283 * Perform initialization of our slic interface. 2279 2284 * 2280 2285 */ 2281 - static int slic_if_init(struct adapter *adapter) 2286 + static int slic_if_init(struct adapter *adapter, unsigned long *flags) 2282 2287 { 2283 2288 struct sliccard *card = adapter->card; 2284 2289 struct net_device *dev = adapter->netdev; ··· 2306 2311 if (dev->flags & IFF_MULTICAST) 2307 2312 adapter->macopts |= MAC_MCAST; 2308 2313 } 2309 - rc = slic_adapter_allocresources(adapter); 2314 + rc = slic_adapter_allocresources(adapter, flags); 2310 2315 if (rc) { 2311 2316 dev_err(&dev->dev, "slic_adapter_allocresources FAILED %x\n", 2312 2317 rc); ··· 2331 2336 mdelay(1); 2332 2337 2333 2338 if (!adapter->isp_initialized) { 2339 + unsigned long flags; 2334 2340 pshmem = (struct slic_shmem *)(unsigned long) 2335 2341 adapter->phys_shmem; 2336 2342 2337 - spin_lock_irqsave(&adapter->bit64reglock.lock, 2338 - adapter->bit64reglock.flags); 2343 + spin_lock_irqsave(&adapter->bit64reglock, flags); 2339 2344 2340 2345 #if BITS_PER_LONG == 64 2341 2346 slic_reg32_write(&slic_regs->slic_addr_upper, ··· 2347 2352 slic_reg32_write(&slic_regs->slic_isp, (u32)&pshmem->isr, 2348 2353 FLUSH); 2349 2354 #endif 2350 - spin_unlock_irqrestore(&adapter->bit64reglock.lock, 2351 - adapter->bit64reglock.flags); 2355 + spin_unlock_irqrestore(&adapter->bit64reglock, flags); 2352 2356 adapter->isp_initialized = 1; 2353 2357 } 2354 2358 ··· 2390 2396 { 2391 2397 struct adapter *adapter = netdev_priv(dev); 2392 2398 struct sliccard *card = adapter->card; 2399 + unsigned long flags; 2393 2400 int status; 2394 2401 2395 2402 netif_stop_queue(adapter->netdev); 2396 2403 2397 - spin_lock_irqsave(&slic_global.driver_lock.lock, 2398 - slic_global.driver_lock.flags); 2404 + spin_lock_irqsave(&slic_global.driver_lock, flags); 2399 2405 if (!adapter->activated) { 2400 2406 card->adapters_activated++; 2401 2407 slic_global.num_slic_ports_active++; 2402 2408 adapter->activated = 1; 2403 2409 } 2404 - status = slic_if_init(adapter); 2410 + status = slic_if_init(adapter, &flags); 2405 2411 2406 2412 if (status != 0) { 2407 2413 if (adapter->activated) { ··· 2415 2421 card->master = adapter; 2416 2422 2417 2423 spin_unlock: 2418 - spin_unlock_irqrestore(&slic_global.driver_lock.lock, 2419 - slic_global.driver_lock.flags); 2424 + spin_unlock_irqrestore(&slic_global.driver_lock, flags); 2420 2425 return status; 2421 2426 } 2422 2427 ··· 2474 2481 struct adapter *adapter = netdev_priv(dev); 2475 2482 struct sliccard *card = adapter->card; 2476 2483 __iomem struct slic_regs *slic_regs = adapter->slic_regs; 2484 + unsigned long flags; 2477 2485 2478 - spin_lock_irqsave(&slic_global.driver_lock.lock, 2479 - slic_global.driver_lock.flags); 2486 + spin_lock_irqsave(&slic_global.driver_lock, flags); 2480 2487 netif_stop_queue(adapter->netdev); 2481 2488 adapter->state = ADAPT_DOWN; 2482 2489 adapter->linkstate = LINK_DOWN; ··· 2505 2512 slic_card_init(card, adapter); 2506 2513 #endif 2507 2514 2508 - spin_unlock_irqrestore(&slic_global.driver_lock.lock, 2509 - slic_global.driver_lock.flags); 2515 + spin_unlock_irqrestore(&slic_global.driver_lock, flags); 2510 2516 return 0; 2511 2517 } 2512 2518 ··· 2655 2663 unsigned char oemfruformat; 2656 2664 struct atk_fru *patkfru; 2657 2665 union oemfru *poemfru; 2666 + unsigned long flags; 2658 2667 2659 2668 /* Reset everything except PCI configuration space */ 2660 2669 slic_soft_reset(adapter); ··· 2686 2693 pshmem = (struct slic_shmem *)(unsigned long) 2687 2694 adapter->phys_shmem; 2688 2695 2689 - spin_lock_irqsave(&adapter->bit64reglock.lock, 2690 - adapter->bit64reglock.flags); 2696 + spin_lock_irqsave(&adapter->bit64reglock, flags); 2691 2697 slic_reg32_write(&slic_regs->slic_addr_upper, 2692 2698 SLIC_GET_ADDR_HIGH(&pshmem->isr), DONT_FLUSH); 2693 2699 slic_reg32_write(&slic_regs->slic_isp, 2694 2700 SLIC_GET_ADDR_LOW(&pshmem->isr), FLUSH); 2695 - spin_unlock_irqrestore(&adapter->bit64reglock.lock, 2696 - adapter->bit64reglock.flags); 2701 + spin_unlock_irqrestore(&adapter->bit64reglock, flags); 2697 2702 2698 2703 status = slic_config_get(adapter, phys_configl, phys_configh); 2699 2704 if (status) { ··· 2845 2854 { 2846 2855 if (slic_first_init) { 2847 2856 slic_first_init = 0; 2848 - spin_lock_init(&slic_global.driver_lock.lock); 2857 + spin_lock_init(&slic_global.driver_lock); 2849 2858 } 2850 2859 } 2851 2860 ··· 2871 2880 adapter->chipid = chip_idx; 2872 2881 adapter->port = 0; /*adapter->functionnumber;*/ 2873 2882 adapter->cardindex = adapter->port; 2874 - spin_lock_init(&adapter->upr_lock.lock); 2875 - spin_lock_init(&adapter->bit64reglock.lock); 2876 - spin_lock_init(&adapter->adapter_lock.lock); 2877 - spin_lock_init(&adapter->reset_lock.lock); 2878 - spin_lock_init(&adapter->handle_lock.lock); 2883 + spin_lock_init(&adapter->upr_lock); 2884 + spin_lock_init(&adapter->bit64reglock); 2885 + spin_lock_init(&adapter->adapter_lock); 2886 + spin_lock_init(&adapter->reset_lock); 2887 + spin_lock_init(&adapter->handle_lock); 2879 2888 2880 2889 adapter->card_size = 1; 2881 2890 /*