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

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

Conflicts:
drivers/net/bnx2x/bnx2x.h
drivers/net/wireless/iwlwifi/iwl-1000.c
drivers/net/wireless/iwlwifi/iwl-6000.c
drivers/net/wireless/iwlwifi/iwl-core.h
drivers/vhost/vhost.c

+458 -202
-1
MAINTAINERS
··· 5943 5943 5944 5944 TULIP NETWORK DRIVERS 5945 5945 M: Grant Grundler <grundler@parisc-linux.org> 5946 - M: Kyle McMartin <kyle@mcmartin.ca> 5947 5946 L: netdev@vger.kernel.org 5948 5947 S: Maintained 5949 5948 F: drivers/net/tulip/
+1 -1
drivers/atm/adummy.c
··· 154 154 err = -ENOMEM; 155 155 goto out; 156 156 } 157 - atm_dev = atm_dev_register(DEV_LABEL, &adummy_ops, -1, NULL); 157 + atm_dev = atm_dev_register(DEV_LABEL, NULL, &adummy_ops, -1, NULL); 158 158 if (!atm_dev) { 159 159 printk(KERN_ERR DEV_LABEL ": atm_dev_register() failed\n"); 160 160 err = -ENODEV;
+2 -1
drivers/atm/ambassador.c
··· 2244 2244 goto out_reset; 2245 2245 } 2246 2246 2247 - dev->atm_dev = atm_dev_register (DEV_LABEL, &amb_ops, -1, NULL); 2247 + dev->atm_dev = atm_dev_register (DEV_LABEL, &pci_dev->dev, &amb_ops, -1, 2248 + NULL); 2248 2249 if (!dev->atm_dev) { 2249 2250 PRINTD (DBG_ERR, "failed to register Madge ATM adapter"); 2250 2251 err = -EINVAL;
+1 -1
drivers/atm/atmtcp.c
··· 366 366 if (!dev_data) 367 367 return -ENOMEM; 368 368 369 - dev = atm_dev_register(DEV_LABEL,&atmtcp_v_dev_ops,itf,NULL); 369 + dev = atm_dev_register(DEV_LABEL,NULL,&atmtcp_v_dev_ops,itf,NULL); 370 370 if (!dev) { 371 371 kfree(dev_data); 372 372 return itf == -1 ? -ENOMEM : -EBUSY;
+1 -1
drivers/atm/eni.c
··· 2244 2244 &zeroes); 2245 2245 if (!cpu_zeroes) goto out1; 2246 2246 } 2247 - dev = atm_dev_register(DEV_LABEL,&ops,-1,NULL); 2247 + dev = atm_dev_register(DEV_LABEL, &pci_dev->dev, &ops, -1, NULL); 2248 2248 if (!dev) goto out2; 2249 2249 pci_set_drvdata(pci_dev, dev); 2250 2250 eni_dev->pci_dev = pci_dev;
+1 -1
drivers/atm/firestream.c
··· 1911 1911 fs_dev, sizeof (struct fs_dev)); 1912 1912 if (!fs_dev) 1913 1913 goto err_out; 1914 - atm_dev = atm_dev_register("fs", &ops, -1, NULL); 1914 + atm_dev = atm_dev_register("fs", &pci_dev->dev, &ops, -1, NULL); 1915 1915 if (!atm_dev) 1916 1916 goto err_out_free_fs_dev; 1917 1917
+7 -7
drivers/atm/fore200e.c
··· 2567 2567 2568 2568 2569 2569 static int __devinit 2570 - fore200e_register(struct fore200e* fore200e) 2570 + fore200e_register(struct fore200e* fore200e, struct device *parent) 2571 2571 { 2572 2572 struct atm_dev* atm_dev; 2573 2573 2574 2574 DPRINTK(2, "device %s being registered\n", fore200e->name); 2575 2575 2576 - atm_dev = atm_dev_register(fore200e->bus->proc_name, &fore200e_ops, -1, 2577 - NULL); 2576 + atm_dev = atm_dev_register(fore200e->bus->proc_name, parent, &fore200e_ops, 2577 + -1, NULL); 2578 2578 if (atm_dev == NULL) { 2579 2579 printk(FORE200E "unable to register device %s\n", fore200e->name); 2580 2580 return -ENODEV; ··· 2594 2594 2595 2595 2596 2596 static int __devinit 2597 - fore200e_init(struct fore200e* fore200e) 2597 + fore200e_init(struct fore200e* fore200e, struct device *parent) 2598 2598 { 2599 - if (fore200e_register(fore200e) < 0) 2599 + if (fore200e_register(fore200e, parent) < 0) 2600 2600 return -ENODEV; 2601 2601 2602 2602 if (fore200e->bus->configure(fore200e) < 0) ··· 2662 2662 2663 2663 sprintf(fore200e->name, "%s-%d", bus->model_name, index); 2664 2664 2665 - err = fore200e_init(fore200e); 2665 + err = fore200e_init(fore200e, &op->dev); 2666 2666 if (err < 0) { 2667 2667 fore200e_shutdown(fore200e); 2668 2668 kfree(fore200e); ··· 2740 2740 2741 2741 sprintf(fore200e->name, "%s-%d", bus->model_name, index); 2742 2742 2743 - err = fore200e_init(fore200e); 2743 + err = fore200e_init(fore200e, &pci_dev->dev); 2744 2744 if (err < 0) { 2745 2745 fore200e_shutdown(fore200e); 2746 2746 goto out_free;
+1 -1
drivers/atm/he.c
··· 366 366 goto init_one_failure; 367 367 } 368 368 369 - atm_dev = atm_dev_register(DEV_LABEL, &he_ops, -1, NULL); 369 + atm_dev = atm_dev_register(DEV_LABEL, &pci_dev->dev, &he_ops, -1, NULL); 370 370 if (!atm_dev) { 371 371 err = -ENODEV; 372 372 goto init_one_failure;
+2 -1
drivers/atm/horizon.c
··· 2733 2733 PRINTD(DBG_INFO, "found Madge ATM adapter (hrz) at: IO %x, IRQ %u, MEM %p", 2734 2734 iobase, irq, membase); 2735 2735 2736 - dev->atm_dev = atm_dev_register(DEV_LABEL, &hrz_ops, -1, NULL); 2736 + dev->atm_dev = atm_dev_register(DEV_LABEL, &pci_dev->dev, &hrz_ops, -1, 2737 + NULL); 2737 2738 if (!(dev->atm_dev)) { 2738 2739 PRINTD(DBG_ERR, "failed to register Madge ATM adapter"); 2739 2740 err = -EINVAL;
+2 -1
drivers/atm/idt77252.c
··· 3698 3698 goto err_out_iounmap; 3699 3699 } 3700 3700 3701 - dev = atm_dev_register("idt77252", &idt77252_ops, -1, NULL); 3701 + dev = atm_dev_register("idt77252", &pcidev->dev, &idt77252_ops, -1, 3702 + NULL); 3702 3703 if (!dev) { 3703 3704 printk("%s: can't register atm device\n", card->name); 3704 3705 err = -EIO;
+1 -1
drivers/atm/iphase.c
··· 3172 3172 ret = -ENODEV; 3173 3173 goto err_out_free_iadev; 3174 3174 } 3175 - dev = atm_dev_register(DEV_LABEL, &ops, -1, NULL); 3175 + dev = atm_dev_register(DEV_LABEL, &pdev->dev, &ops, -1, NULL); 3176 3176 if (!dev) { 3177 3177 ret = -ENOMEM; 3178 3178 goto err_out_disable_dev;
+1 -1
drivers/atm/lanai.c
··· 2588 2588 return -ENOMEM; 2589 2589 } 2590 2590 2591 - atmdev = atm_dev_register(DEV_LABEL, &ops, -1, NULL); 2591 + atmdev = atm_dev_register(DEV_LABEL, &pci->dev, &ops, -1, NULL); 2592 2592 if (atmdev == NULL) { 2593 2593 printk(KERN_ERR DEV_LABEL 2594 2594 ": couldn't register atm device!\n");
+2 -1
drivers/atm/nicstar.c
··· 771 771 } 772 772 773 773 /* Register device */ 774 - card->atmdev = atm_dev_register("nicstar", &atm_ops, -1, NULL); 774 + card->atmdev = atm_dev_register("nicstar", &card->pcidev->dev, &atm_ops, 775 + -1, NULL); 775 776 if (card->atmdev == NULL) { 776 777 printk("nicstar%d: can't register device.\n", i); 777 778 error = 17;
+4 -4
drivers/atm/solos-pci.c
··· 166 166 static struct atm_vcc* find_vcc(struct atm_dev *dev, short vpi, int vci); 167 167 static int list_vccs(int vci); 168 168 static void release_vccs(struct atm_dev *dev); 169 - static int atm_init(struct solos_card *); 169 + static int atm_init(struct solos_card *, struct device *); 170 170 static void atm_remove(struct solos_card *); 171 171 static int send_command(struct solos_card *card, int dev, const char *buf, size_t size); 172 172 static void solos_bh(unsigned long); ··· 1210 1210 if (db_firmware_upgrade) 1211 1211 flash_upgrade(card, 3); 1212 1212 1213 - err = atm_init(card); 1213 + err = atm_init(card, &dev->dev); 1214 1214 if (err) 1215 1215 goto out_free_irq; 1216 1216 ··· 1233 1233 return err; 1234 1234 } 1235 1235 1236 - static int atm_init(struct solos_card *card) 1236 + static int atm_init(struct solos_card *card, struct device *parent) 1237 1237 { 1238 1238 int i; 1239 1239 ··· 1244 1244 skb_queue_head_init(&card->tx_queue[i]); 1245 1245 skb_queue_head_init(&card->cli_queue[i]); 1246 1246 1247 - card->atmdev[i] = atm_dev_register("solos-pci", &fpga_ops, -1, NULL); 1247 + card->atmdev[i] = atm_dev_register("solos-pci", parent, &fpga_ops, -1, NULL); 1248 1248 if (!card->atmdev[i]) { 1249 1249 dev_err(&card->dev->dev, "Could not register ATM device %d\n", i); 1250 1250 atm_remove(card);
+1 -1
drivers/atm/zatm.c
··· 1597 1597 goto out; 1598 1598 } 1599 1599 1600 - dev = atm_dev_register(DEV_LABEL, &ops, -1, NULL); 1600 + dev = atm_dev_register(DEV_LABEL, &pci_dev->dev, &ops, -1, NULL); 1601 1601 if (!dev) 1602 1602 goto out_free; 1603 1603
+4 -2
drivers/bluetooth/hci_ldisc.c
··· 311 311 312 312 if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) { 313 313 hu->proto->close(hu); 314 - hci_unregister_dev(hdev); 315 - hci_free_dev(hdev); 314 + if (hdev) { 315 + hci_unregister_dev(hdev); 316 + hci_free_dev(hdev); 317 + } 316 318 } 317 319 } 318 320 }
+1
drivers/connector/connector.c
··· 36 36 MODULE_LICENSE("GPL"); 37 37 MODULE_AUTHOR("Evgeniy Polyakov <zbr@ioremap.net>"); 38 38 MODULE_DESCRIPTION("Generic userspace <-> kernelspace connector."); 39 + MODULE_ALIAS_NET_PF_PROTO(PF_NETLINK, NETLINK_CONNECTOR); 39 40 40 41 static struct cn_dev cdev; 41 42
+1 -1
drivers/net/benet/be.h
··· 242 242 u8 __iomem *db; /* Door Bell */ 243 243 u8 __iomem *pcicfg; /* PCI config space */ 244 244 245 - spinlock_t mbox_lock; /* For serializing mbox cmds to BE card */ 245 + struct mutex mbox_lock; /* For serializing mbox cmds to BE card */ 246 246 struct be_dma_mem mbox_mem; 247 247 /* Mbox mem is adjusted to align to 16 bytes. The allocated addr 248 248 * is stored for freeing purpose */
+45 -30
drivers/net/benet/be_cmds.c
··· 467 467 u8 *wrb; 468 468 int status; 469 469 470 - spin_lock(&adapter->mbox_lock); 470 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 471 + return -1; 471 472 472 473 wrb = (u8 *)wrb_from_mbox(adapter); 473 474 *wrb++ = 0xFF; ··· 482 481 483 482 status = be_mbox_notify_wait(adapter); 484 483 485 - spin_unlock(&adapter->mbox_lock); 484 + mutex_unlock(&adapter->mbox_lock); 486 485 return status; 487 486 } 488 487 ··· 497 496 if (adapter->eeh_err) 498 497 return -EIO; 499 498 500 - spin_lock(&adapter->mbox_lock); 499 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 500 + return -1; 501 501 502 502 wrb = (u8 *)wrb_from_mbox(adapter); 503 503 *wrb++ = 0xFF; ··· 512 510 513 511 status = be_mbox_notify_wait(adapter); 514 512 515 - spin_unlock(&adapter->mbox_lock); 513 + mutex_unlock(&adapter->mbox_lock); 516 514 return status; 517 515 } 518 516 int be_cmd_eq_create(struct be_adapter *adapter, ··· 523 521 struct be_dma_mem *q_mem = &eq->dma_mem; 524 522 int status; 525 523 526 - spin_lock(&adapter->mbox_lock); 524 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 525 + return -1; 527 526 528 527 wrb = wrb_from_mbox(adapter); 529 528 req = embedded_payload(wrb); ··· 554 551 eq->created = true; 555 552 } 556 553 557 - spin_unlock(&adapter->mbox_lock); 554 + mutex_unlock(&adapter->mbox_lock); 558 555 return status; 559 556 } 560 557 ··· 566 563 struct be_cmd_req_mac_query *req; 567 564 int status; 568 565 569 - spin_lock(&adapter->mbox_lock); 566 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 567 + return -1; 570 568 571 569 wrb = wrb_from_mbox(adapter); 572 570 req = embedded_payload(wrb); ··· 592 588 memcpy(mac_addr, resp->mac.addr, ETH_ALEN); 593 589 } 594 590 595 - spin_unlock(&adapter->mbox_lock); 591 + mutex_unlock(&adapter->mbox_lock); 596 592 return status; 597 593 } 598 594 ··· 676 672 void *ctxt; 677 673 int status; 678 674 679 - spin_lock(&adapter->mbox_lock); 675 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 676 + return -1; 680 677 681 678 wrb = wrb_from_mbox(adapter); 682 679 req = embedded_payload(wrb); ··· 731 726 cq->created = true; 732 727 } 733 728 734 - spin_unlock(&adapter->mbox_lock); 729 + mutex_unlock(&adapter->mbox_lock); 735 730 736 731 return status; 737 732 } ··· 754 749 void *ctxt; 755 750 int status; 756 751 757 - spin_lock(&adapter->mbox_lock); 752 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 753 + return -1; 758 754 759 755 wrb = wrb_from_mbox(adapter); 760 756 req = embedded_payload(wrb); ··· 799 793 mccq->id = le16_to_cpu(resp->id); 800 794 mccq->created = true; 801 795 } 802 - spin_unlock(&adapter->mbox_lock); 796 + mutex_unlock(&adapter->mbox_lock); 803 797 804 798 return status; 805 799 } ··· 814 808 void *ctxt; 815 809 int status; 816 810 817 - spin_lock(&adapter->mbox_lock); 811 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 812 + return -1; 818 813 819 814 wrb = wrb_from_mbox(adapter); 820 815 req = embedded_payload(wrb); ··· 847 840 txq->created = true; 848 841 } 849 842 850 - spin_unlock(&adapter->mbox_lock); 843 + mutex_unlock(&adapter->mbox_lock); 851 844 852 845 return status; 853 846 } ··· 862 855 struct be_dma_mem *q_mem = &rxq->dma_mem; 863 856 int status; 864 857 865 - spin_lock(&adapter->mbox_lock); 858 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 859 + return -1; 866 860 867 861 wrb = wrb_from_mbox(adapter); 868 862 req = embedded_payload(wrb); ··· 890 882 *rss_id = resp->rss_id; 891 883 } 892 884 893 - spin_unlock(&adapter->mbox_lock); 885 + mutex_unlock(&adapter->mbox_lock); 894 886 895 887 return status; 896 888 } ··· 909 901 if (adapter->eeh_err) 910 902 return -EIO; 911 903 912 - spin_lock(&adapter->mbox_lock); 904 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 905 + return -1; 913 906 914 907 wrb = wrb_from_mbox(adapter); 915 908 req = embedded_payload(wrb); ··· 947 938 948 939 status = be_mbox_notify_wait(adapter); 949 940 950 - spin_unlock(&adapter->mbox_lock); 941 + mutex_unlock(&adapter->mbox_lock); 951 942 952 943 return status; 953 944 } ··· 963 954 struct be_cmd_req_if_create *req; 964 955 int status; 965 956 966 - spin_lock(&adapter->mbox_lock); 957 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 958 + return -1; 967 959 968 960 wrb = wrb_from_mbox(adapter); 969 961 req = embedded_payload(wrb); ··· 990 980 *pmac_id = le32_to_cpu(resp->pmac_id); 991 981 } 992 982 993 - spin_unlock(&adapter->mbox_lock); 983 + mutex_unlock(&adapter->mbox_lock); 994 984 return status; 995 985 } 996 986 ··· 1004 994 if (adapter->eeh_err) 1005 995 return -EIO; 1006 996 1007 - spin_lock(&adapter->mbox_lock); 997 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 998 + return -1; 1008 999 1009 1000 wrb = wrb_from_mbox(adapter); 1010 1001 req = embedded_payload(wrb); ··· 1020 1009 1021 1010 status = be_mbox_notify_wait(adapter); 1022 1011 1023 - spin_unlock(&adapter->mbox_lock); 1012 + mutex_unlock(&adapter->mbox_lock); 1024 1013 1025 1014 return status; 1026 1015 } ··· 1110 1099 struct be_cmd_req_get_fw_version *req; 1111 1100 int status; 1112 1101 1113 - spin_lock(&adapter->mbox_lock); 1102 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 1103 + return -1; 1114 1104 1115 1105 wrb = wrb_from_mbox(adapter); 1116 1106 req = embedded_payload(wrb); ··· 1128 1116 strncpy(fw_ver, resp->firmware_version_string, FW_VER_LEN); 1129 1117 } 1130 1118 1131 - spin_unlock(&adapter->mbox_lock); 1119 + mutex_unlock(&adapter->mbox_lock); 1132 1120 return status; 1133 1121 } 1134 1122 ··· 1373 1361 struct be_cmd_req_query_fw_cfg *req; 1374 1362 int status; 1375 1363 1376 - spin_lock(&adapter->mbox_lock); 1364 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 1365 + return -1; 1377 1366 1378 1367 wrb = wrb_from_mbox(adapter); 1379 1368 req = embedded_payload(wrb); ··· 1393 1380 *caps = le32_to_cpu(resp->function_caps); 1394 1381 } 1395 1382 1396 - spin_unlock(&adapter->mbox_lock); 1383 + mutex_unlock(&adapter->mbox_lock); 1397 1384 return status; 1398 1385 } 1399 1386 ··· 1404 1391 struct be_cmd_req_hdr *req; 1405 1392 int status; 1406 1393 1407 - spin_lock(&adapter->mbox_lock); 1394 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 1395 + return -1; 1408 1396 1409 1397 wrb = wrb_from_mbox(adapter); 1410 1398 req = embedded_payload(wrb); ··· 1418 1404 1419 1405 status = be_mbox_notify_wait(adapter); 1420 1406 1421 - spin_unlock(&adapter->mbox_lock); 1407 + mutex_unlock(&adapter->mbox_lock); 1422 1408 return status; 1423 1409 } 1424 1410 ··· 1429 1415 u32 myhash[10]; 1430 1416 int status; 1431 1417 1432 - spin_lock(&adapter->mbox_lock); 1418 + if (mutex_lock_interruptible(&adapter->mbox_lock)) 1419 + return -1; 1433 1420 1434 1421 wrb = wrb_from_mbox(adapter); 1435 1422 req = embedded_payload(wrb); ··· 1450 1435 1451 1436 status = be_mbox_notify_wait(adapter); 1452 1437 1453 - spin_unlock(&adapter->mbox_lock); 1438 + mutex_unlock(&adapter->mbox_lock); 1454 1439 return status; 1455 1440 } 1456 1441
+1 -1
drivers/net/benet/be_main.c
··· 2746 2746 } 2747 2747 memset(mc_cmd_mem->va, 0, mc_cmd_mem->size); 2748 2748 2749 - spin_lock_init(&adapter->mbox_lock); 2749 + mutex_init(&adapter->mbox_lock); 2750 2750 spin_lock_init(&adapter->mcc_lock); 2751 2751 spin_lock_init(&adapter->mcc_cq_lock); 2752 2752
+6 -1
drivers/net/bonding/bond_ipv6.c
··· 88 88 } 89 89 90 90 if (vlan_id) { 91 - skb = vlan_put_tag(skb, vlan_id); 91 + /* The Ethernet header is not present yet, so it is 92 + * too early to insert a VLAN tag. Force use of an 93 + * out-of-line tag here and let dev_hard_start_xmit() 94 + * insert it if the slave hardware can't. 95 + */ 96 + skb = __vlan_hwaccel_put_tag(skb, vlan_id); 92 97 if (!skb) { 93 98 pr_err("failed to insert VLAN tag\n"); 94 99 return;
+15 -44
drivers/net/bonding/bond_main.c
··· 171 171 /*----------------------------- Global variables ----------------------------*/ 172 172 173 173 #ifdef CONFIG_NET_POLL_CONTROLLER 174 - cpumask_var_t netpoll_block_tx; 174 + atomic_t netpoll_block_tx = ATOMIC_INIT(0); 175 175 #endif 176 176 177 177 static const char * const version = ··· 418 418 * @bond: bond device that got this skb for tx. 419 419 * @skb: hw accel VLAN tagged skb to transmit 420 420 * @slave_dev: slave that is supposed to xmit this skbuff 421 - * 422 - * When the bond gets an skb to transmit that is 423 - * already hardware accelerated VLAN tagged, and it 424 - * needs to relay this skb to a slave that is not 425 - * hw accel capable, the skb needs to be "unaccelerated", 426 - * i.e. strip the hwaccel tag and re-insert it as part 427 - * of the payload. 428 421 */ 429 422 int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, 430 423 struct net_device *slave_dev) 431 424 { 432 - unsigned short uninitialized_var(vlan_id); 433 - 434 - /* Test vlan_list not vlgrp to catch and handle 802.1p tags */ 435 - if (!list_empty(&bond->vlan_list) && 436 - !(slave_dev->features & NETIF_F_HW_VLAN_TX) && 437 - vlan_get_tag(skb, &vlan_id) == 0) { 438 - skb->dev = slave_dev; 439 - skb = vlan_put_tag(skb, vlan_id); 440 - if (!skb) { 441 - /* vlan_put_tag() frees the skb in case of error, 442 - * so return success here so the calling functions 443 - * won't attempt to free is again. 444 - */ 445 - return 0; 446 - } 447 - } else { 448 - skb->dev = slave_dev; 449 - } 450 - 425 + skb->dev = slave_dev; 451 426 skb->priority = 1; 452 427 #ifdef CONFIG_NET_POLL_CONTROLLER 453 428 if (unlikely(bond->dev->priv_flags & IFF_IN_NETPOLL)) { ··· 1172 1197 bond_do_fail_over_mac(bond, new_active, 1173 1198 old_active); 1174 1199 1175 - bond->send_grat_arp = bond->params.num_grat_arp; 1176 - bond_send_gratuitous_arp(bond); 1200 + if (netif_running(bond->dev)) { 1201 + bond->send_grat_arp = bond->params.num_grat_arp; 1202 + bond_send_gratuitous_arp(bond); 1177 1203 1178 - bond->send_unsol_na = bond->params.num_unsol_na; 1179 - bond_send_unsolicited_na(bond); 1204 + bond->send_unsol_na = bond->params.num_unsol_na; 1205 + bond_send_unsolicited_na(bond); 1206 + } 1180 1207 1181 1208 write_unlock_bh(&bond->curr_slave_lock); 1182 1209 read_unlock(&bond->lock); ··· 1192 1215 1193 1216 /* resend IGMP joins since active slave has changed or 1194 1217 * all were sent on curr_active_slave */ 1195 - if ((USES_PRIMARY(bond->params.mode) && new_active) || 1196 - bond->params.mode == BOND_MODE_ROUNDROBIN) { 1218 + if (((USES_PRIMARY(bond->params.mode) && new_active) || 1219 + bond->params.mode == BOND_MODE_ROUNDROBIN) && 1220 + netif_running(bond->dev)) { 1197 1221 bond->igmp_retrans = bond->params.resend_igmp; 1198 1222 queue_delayed_work(bond->wq, &bond->mcast_work, 0); 1199 1223 } ··· 5277 5299 if (res) 5278 5300 goto out; 5279 5301 5280 - #ifdef CONFIG_NET_POLL_CONTROLLER 5281 - if (!alloc_cpumask_var(&netpoll_block_tx, GFP_KERNEL)) { 5282 - res = -ENOMEM; 5283 - goto out; 5284 - } 5285 - #endif 5286 - 5287 5302 res = register_pernet_subsys(&bond_net_ops); 5288 5303 if (res) 5289 5304 goto out; ··· 5306 5335 rtnl_link_unregister(&bond_link_ops); 5307 5336 err_link: 5308 5337 unregister_pernet_subsys(&bond_net_ops); 5309 - #ifdef CONFIG_NET_POLL_CONTROLLER 5310 - free_cpumask_var(netpoll_block_tx); 5311 - #endif 5312 5338 goto out; 5313 5339 5314 5340 } ··· 5323 5355 unregister_pernet_subsys(&bond_net_ops); 5324 5356 5325 5357 #ifdef CONFIG_NET_POLL_CONTROLLER 5326 - free_cpumask_var(netpoll_block_tx); 5358 + /* 5359 + * Make sure we don't have an imbalance on our netpoll blocking 5360 + */ 5361 + WARN_ON(atomic_read(&netpoll_block_tx)); 5327 5362 #endif 5328 5363 } 5329 5364
+6 -10
drivers/net/bonding/bonding.h
··· 119 119 120 120 121 121 #ifdef CONFIG_NET_POLL_CONTROLLER 122 - extern cpumask_var_t netpoll_block_tx; 122 + extern atomic_t netpoll_block_tx; 123 123 124 124 static inline void block_netpoll_tx(void) 125 125 { 126 - preempt_disable(); 127 - BUG_ON(cpumask_test_and_set_cpu(smp_processor_id(), 128 - netpoll_block_tx)); 126 + atomic_inc(&netpoll_block_tx); 129 127 } 130 128 131 129 static inline void unblock_netpoll_tx(void) 132 130 { 133 - BUG_ON(!cpumask_test_and_clear_cpu(smp_processor_id(), 134 - netpoll_block_tx)); 135 - preempt_enable(); 131 + atomic_dec(&netpoll_block_tx); 136 132 } 137 133 138 134 static inline int is_netpoll_tx_blocked(struct net_device *dev) 139 135 { 140 136 if (unlikely(dev->priv_flags & IFF_IN_NETPOLL)) 141 - return cpumask_test_cpu(smp_processor_id(), netpoll_block_tx); 137 + return atomic_read(&netpoll_block_tx); 142 138 return 0; 143 139 } 144 140 #else ··· 273 277 274 278 bond_for_each_slave(bond, slave, i) { 275 279 if (slave->dev == slave_dev) { 276 - break; 280 + return slave; 277 281 } 278 282 } 279 283 280 - return slave; 284 + return 0; 281 285 } 282 286 283 287 static inline struct bonding *bond_get_bond_by_slave(struct slave *slave)
+11 -4
drivers/net/cxgb4vf/cxgb4vf_main.c
··· 2278 2278 { 2279 2279 struct sge *s = &adapter->sge; 2280 2280 int q10g, n10g, qidx, pidx, qs; 2281 + size_t iqe_size; 2281 2282 2282 2283 /* 2283 2284 * We should not be called till we know how many Queue Sets we can ··· 2323 2322 s->ethqsets = qidx; 2324 2323 2325 2324 /* 2325 + * The Ingress Queue Entry Size for our various Response Queues needs 2326 + * to be big enough to accommodate the largest message we can receive 2327 + * from the chip/firmware; which is 64 bytes ... 2328 + */ 2329 + iqe_size = 64; 2330 + 2331 + /* 2326 2332 * Set up default Queue Set parameters ... Start off with the 2327 2333 * shortest interrupt holdoff timer. 2328 2334 */ ··· 2337 2329 struct sge_eth_rxq *rxq = &s->ethrxq[qs]; 2338 2330 struct sge_eth_txq *txq = &s->ethtxq[qs]; 2339 2331 2340 - init_rspq(&rxq->rspq, 0, 0, 1024, L1_CACHE_BYTES); 2332 + init_rspq(&rxq->rspq, 0, 0, 1024, iqe_size); 2341 2333 rxq->fl.size = 72; 2342 2334 txq->q.size = 1024; 2343 2335 } ··· 2346 2338 * The firmware event queue is used for link state changes and 2347 2339 * notifications of TX DMA completions. 2348 2340 */ 2349 - init_rspq(&s->fw_evtq, SGE_TIMER_RSTRT_CNTR, 0, 512, 2350 - L1_CACHE_BYTES); 2341 + init_rspq(&s->fw_evtq, SGE_TIMER_RSTRT_CNTR, 0, 512, iqe_size); 2351 2342 2352 2343 /* 2353 2344 * The forwarded interrupt queue is used when we're in MSI interrupt ··· 2362 2355 * any time ... 2363 2356 */ 2364 2357 init_rspq(&s->intrq, SGE_TIMER_RSTRT_CNTR, 0, MSIX_ENTRIES + 1, 2365 - L1_CACHE_BYTES); 2358 + iqe_size); 2366 2359 } 2367 2360 2368 2361 /*
+2 -1
drivers/net/enic/enic_main.c
··· 2098 2098 case VNIC_DEV_INTR_MODE_MSIX: 2099 2099 for (i = 0; i < enic->rq_count; i++) { 2100 2100 intr = enic_msix_rq_intr(enic, i); 2101 - enic_isr_msix_rq(enic->msix_entry[intr].vector, enic); 2101 + enic_isr_msix_rq(enic->msix_entry[intr].vector, 2102 + &enic->napi[i]); 2102 2103 } 2103 2104 intr = enic_msix_wq_intr(enic, i); 2104 2105 enic_isr_msix_wq(enic->msix_entry[intr].vector, enic);
+1
drivers/net/pcmcia/axnet_cs.c
··· 690 690 static struct pcmcia_device_id axnet_ids[] = { 691 691 PCMCIA_PFC_DEVICE_MANF_CARD(0, 0x016c, 0x0081), 692 692 PCMCIA_DEVICE_MANF_CARD(0x018a, 0x0301), 693 + PCMCIA_DEVICE_MANF_CARD(0x01bf, 0x2328), 693 694 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0301), 694 695 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0303), 695 696 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0309),
-1
drivers/net/pcmcia/pcnet_cs.c
··· 1493 1493 PCMCIA_DEVICE_MANF_CARD(0x0149, 0x4530), 1494 1494 PCMCIA_DEVICE_MANF_CARD(0x0149, 0xc1ab), 1495 1495 PCMCIA_DEVICE_MANF_CARD(0x0186, 0x0110), 1496 - PCMCIA_DEVICE_MANF_CARD(0x01bf, 0x2328), 1497 1496 PCMCIA_DEVICE_MANF_CARD(0x01bf, 0x8041), 1498 1497 PCMCIA_DEVICE_MANF_CARD(0x0213, 0x2452), 1499 1498 PCMCIA_DEVICE_MANF_CARD(0x026f, 0x0300),
+1 -1
drivers/net/phy/Kconfig
··· 64 64 config ICPLUS_PHY 65 65 tristate "Drivers for ICPlus PHYs" 66 66 ---help--- 67 - Currently supports the IP175C PHY. 67 + Currently supports the IP175C and IP1001 PHYs. 68 68 69 69 config REALTEK_PHY 70 70 tristate "Drivers for Realtek PHYs"
+54 -5
drivers/net/phy/icplus.c
··· 30 30 #include <asm/irq.h> 31 31 #include <asm/uaccess.h> 32 32 33 - MODULE_DESCRIPTION("ICPlus IP175C PHY driver"); 33 + MODULE_DESCRIPTION("ICPlus IP175C/IC1001 PHY drivers"); 34 34 MODULE_AUTHOR("Michael Barkowski"); 35 35 MODULE_LICENSE("GPL"); 36 36 ··· 89 89 return 0; 90 90 } 91 91 92 + static int ip1001_config_init(struct phy_device *phydev) 93 + { 94 + int err, value; 95 + 96 + /* Software Reset PHY */ 97 + value = phy_read(phydev, MII_BMCR); 98 + value |= BMCR_RESET; 99 + err = phy_write(phydev, MII_BMCR, value); 100 + if (err < 0) 101 + return err; 102 + 103 + do { 104 + value = phy_read(phydev, MII_BMCR); 105 + } while (value & BMCR_RESET); 106 + 107 + /* Additional delay (2ns) used to adjust RX clock phase 108 + * at GMII/ RGMII interface */ 109 + value = phy_read(phydev, 16); 110 + value |= 0x3; 111 + 112 + err = phy_write(phydev, 16, value); 113 + if (err < 0) 114 + return err; 115 + 116 + return err; 117 + } 118 + 92 119 static int ip175c_read_status(struct phy_device *phydev) 93 120 { 94 121 if (phydev->addr == 4) /* WAN port */ ··· 148 121 .driver = { .owner = THIS_MODULE,}, 149 122 }; 150 123 151 - static int __init ip175c_init(void) 124 + static struct phy_driver ip1001_driver = { 125 + .phy_id = 0x02430d90, 126 + .name = "ICPlus IP1001", 127 + .phy_id_mask = 0x0ffffff0, 128 + .features = PHY_GBIT_FEATURES | SUPPORTED_Pause | 129 + SUPPORTED_Asym_Pause, 130 + .config_init = &ip1001_config_init, 131 + .config_aneg = &genphy_config_aneg, 132 + .read_status = &genphy_read_status, 133 + .suspend = genphy_suspend, 134 + .resume = genphy_resume, 135 + .driver = { .owner = THIS_MODULE,}, 136 + }; 137 + 138 + static int __init icplus_init(void) 152 139 { 140 + int ret = 0; 141 + 142 + ret = phy_driver_register(&ip1001_driver); 143 + if (ret < 0) 144 + return -ENODEV; 145 + 153 146 return phy_driver_register(&ip175c_driver); 154 147 } 155 148 156 - static void __exit ip175c_exit(void) 149 + static void __exit icplus_exit(void) 157 150 { 151 + phy_driver_unregister(&ip1001_driver); 158 152 phy_driver_unregister(&ip175c_driver); 159 153 } 160 154 161 - module_init(ip175c_init); 162 - module_exit(ip175c_exit); 155 + module_init(icplus_init); 156 + module_exit(icplus_exit); 163 157 164 158 static struct mdio_device_id __maybe_unused icplus_tbl[] = { 165 159 { 0x02430d80, 0x0ffffff0 }, 160 + { 0x02430d90, 0x0ffffff0 }, 166 161 { } 167 162 }; 168 163
+1 -1
drivers/net/pppoe.c
··· 948 948 949 949 abort: 950 950 kfree_skb(skb); 951 - return 0; 951 + return 1; 952 952 } 953 953 954 954 /************************************************************************
+1
drivers/net/qlge/qlge.h
··· 2083 2083 u32 mailbox_in; 2084 2084 u32 mailbox_out; 2085 2085 struct mbox_params idc_mbc; 2086 + struct mutex mpi_mutex; 2086 2087 2087 2088 int tx_ring_size; 2088 2089 int rx_ring_size;
+1
drivers/net/qlge/qlge_main.c
··· 4629 4629 INIT_DELAYED_WORK(&qdev->mpi_idc_work, ql_mpi_idc_work); 4630 4630 INIT_DELAYED_WORK(&qdev->mpi_core_to_log, ql_mpi_core_to_log); 4631 4631 init_completion(&qdev->ide_completion); 4632 + mutex_init(&qdev->mpi_mutex); 4632 4633 4633 4634 if (!cards_found) { 4634 4635 dev_info(&pdev->dev, "%s\n", DRV_STRING);
+4 -8
drivers/net/qlge/qlge_mpi.c
··· 534 534 int status; 535 535 unsigned long count; 536 536 537 + mutex_lock(&qdev->mpi_mutex); 537 538 538 539 /* Begin polled mode for MPI */ 539 540 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16)); ··· 604 603 end: 605 604 /* End polled mode for MPI */ 606 605 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16) | INTR_MASK_PI); 606 + mutex_unlock(&qdev->mpi_mutex); 607 607 return status; 608 608 } 609 609 ··· 1101 1099 static int ql_set_port_cfg(struct ql_adapter *qdev) 1102 1100 { 1103 1101 int status; 1104 - rtnl_lock(); 1105 1102 status = ql_mb_set_port_cfg(qdev); 1106 - rtnl_unlock(); 1107 1103 if (status) 1108 1104 return status; 1109 1105 status = ql_idc_wait(qdev); ··· 1122 1122 container_of(work, struct ql_adapter, mpi_port_cfg_work.work); 1123 1123 int status; 1124 1124 1125 - rtnl_lock(); 1126 1125 status = ql_mb_get_port_cfg(qdev); 1127 - rtnl_unlock(); 1128 1126 if (status) { 1129 1127 netif_err(qdev, drv, qdev->ndev, 1130 1128 "Bug: Failed to get port config data.\n"); ··· 1165 1167 u32 aen; 1166 1168 int timeout; 1167 1169 1168 - rtnl_lock(); 1169 1170 aen = mbcp->mbox_out[1] >> 16; 1170 1171 timeout = (mbcp->mbox_out[1] >> 8) & 0xf; 1171 1172 ··· 1228 1231 } 1229 1232 break; 1230 1233 } 1231 - rtnl_unlock(); 1232 1234 } 1233 1235 1234 1236 void ql_mpi_work(struct work_struct *work) ··· 1238 1242 struct mbox_params *mbcp = &mbc; 1239 1243 int err = 0; 1240 1244 1241 - rtnl_lock(); 1245 + mutex_lock(&qdev->mpi_mutex); 1242 1246 /* Begin polled mode for MPI */ 1243 1247 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16)); 1244 1248 ··· 1255 1259 1256 1260 /* End polled mode for MPI */ 1257 1261 ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16) | INTR_MASK_PI); 1258 - rtnl_unlock(); 1262 + mutex_unlock(&qdev->mpi_mutex); 1259 1263 ql_enable_completion_interrupt(qdev, 0); 1260 1264 } 1261 1265
+16 -10
drivers/net/r8169.c
··· 744 744 mdio_write(ioaddr, MII_BMCR, val & 0xffff); 745 745 } 746 746 747 - static void rtl8169_check_link_status(struct net_device *dev, 747 + static void __rtl8169_check_link_status(struct net_device *dev, 748 748 struct rtl8169_private *tp, 749 - void __iomem *ioaddr) 749 + void __iomem *ioaddr, 750 + bool pm) 750 751 { 751 752 unsigned long flags; 752 753 753 754 spin_lock_irqsave(&tp->lock, flags); 754 755 if (tp->link_ok(ioaddr)) { 755 756 /* This is to cancel a scheduled suspend if there's one. */ 756 - pm_request_resume(&tp->pci_dev->dev); 757 + if (pm) 758 + pm_request_resume(&tp->pci_dev->dev); 757 759 netif_carrier_on(dev); 758 760 netif_info(tp, ifup, dev, "link up\n"); 759 761 } else { 760 762 netif_carrier_off(dev); 761 763 netif_info(tp, ifdown, dev, "link down\n"); 762 - pm_schedule_suspend(&tp->pci_dev->dev, 100); 764 + if (pm) 765 + pm_schedule_suspend(&tp->pci_dev->dev, 100); 763 766 } 764 767 spin_unlock_irqrestore(&tp->lock, flags); 768 + } 769 + 770 + static void rtl8169_check_link_status(struct net_device *dev, 771 + struct rtl8169_private *tp, 772 + void __iomem *ioaddr) 773 + { 774 + __rtl8169_check_link_status(dev, tp, ioaddr, false); 765 775 } 766 776 767 777 #define WAKE_ANY (WAKE_PHY | WAKE_MAGIC | WAKE_UCAST | WAKE_BCAST | WAKE_MCAST) ··· 4610 4600 } 4611 4601 4612 4602 if (status & LinkChg) 4613 - rtl8169_check_link_status(dev, tp, ioaddr); 4603 + __rtl8169_check_link_status(dev, tp, ioaddr, true); 4614 4604 4615 4605 /* We need to see the lastest version of tp->intr_mask to 4616 4606 * avoid ignoring an MSI interrupt and having to wait for ··· 4900 4890 struct net_device *dev = pci_get_drvdata(pdev); 4901 4891 struct rtl8169_private *tp = netdev_priv(dev); 4902 4892 4903 - if (!tp->TxDescArray) 4904 - return 0; 4905 - 4906 - rtl8169_check_link_status(dev, tp, tp->mmio_addr); 4907 - return -EBUSY; 4893 + return tp->TxDescArray ? -EBUSY : 0; 4908 4894 } 4909 4895 4910 4896 static const struct dev_pm_ops rtl8169_pm_ops = {
+2 -2
drivers/net/tehuti.c
··· 324 324 ENTER; 325 325 master = READ_REG(priv, regINIT_SEMAPHORE); 326 326 if (!READ_REG(priv, regINIT_STATUS) && master) { 327 - rc = request_firmware(&fw, "tehuti/firmware.bin", &priv->pdev->dev); 327 + rc = request_firmware(&fw, "tehuti/bdx.bin", &priv->pdev->dev); 328 328 if (rc) 329 329 goto out; 330 330 bdx_tx_push_desc_safe(priv, (char *)fw->data, fw->size); ··· 2510 2510 MODULE_LICENSE("GPL"); 2511 2511 MODULE_AUTHOR(DRIVER_AUTHOR); 2512 2512 MODULE_DESCRIPTION(BDX_DRV_DESC); 2513 - MODULE_FIRMWARE("tehuti/firmware.bin"); 2513 + MODULE_FIRMWARE("tehuti/bdx.bin");
+4
drivers/net/usb/asix.c
··· 1508 1508 USB_DEVICE (0x0b95, 0x1780), 1509 1509 .driver_info = (unsigned long) &ax88178_info, 1510 1510 }, { 1511 + // Logitec LAN-GTJ/U2A 1512 + USB_DEVICE (0x0789, 0x0160), 1513 + .driver_info = (unsigned long) &ax88178_info, 1514 + }, { 1511 1515 // Linksys USB200M Rev 2 1512 1516 USB_DEVICE (0x13b1, 0x0018), 1513 1517 .driver_info = (unsigned long) &ax88772_info,
-4
drivers/net/usb/hso.c
··· 958 958 /* Packet is complete. Inject into stack. */ 959 959 /* We have IP packet here */ 960 960 odev->skb_rx_buf->protocol = cpu_to_be16(ETH_P_IP); 961 - /* don't check it */ 962 - odev->skb_rx_buf->ip_summed = 963 - CHECKSUM_UNNECESSARY; 964 - 965 961 skb_reset_mac_header(odev->skb_rx_buf); 966 962 967 963 /* Ship it off to the kernel */
+3 -1
drivers/net/veth.c
··· 166 166 if (!(rcv->flags & IFF_UP)) 167 167 goto tx_drop; 168 168 169 - if (dev->features & NETIF_F_NO_CSUM) 169 + /* don't change ip_summed == CHECKSUM_PARTIAL, as that 170 + will cause bad checksum on forwarded packets */ 171 + if (skb->ip_summed == CHECKSUM_NONE) 170 172 skb->ip_summed = rcv_priv->ip_summed; 171 173 172 174 length = skb->len + ETH_HLEN;
+4 -1
drivers/net/wan/hd64572.c
··· 293 293 struct net_device *dev = port->netdev; 294 294 card_t* card = port->card; 295 295 u8 stat; 296 + unsigned count = 0; 296 297 297 298 spin_lock(&port->lock); 298 299 ··· 317 316 dev->stats.tx_bytes += readw(&desc->len); 318 317 } 319 318 writeb(0, &desc->stat); /* Free descriptor */ 319 + count++; 320 320 port->txlast = (port->txlast + 1) % card->tx_ring_buffers; 321 321 } 322 322 323 - netif_wake_queue(dev); 323 + if (count) 324 + netif_wake_queue(dev); 324 325 spin_unlock(&port->lock); 325 326 } 326 327
+2
drivers/net/wireless/iwlwifi/iwl-1000.c
··· 311 311 .base_params = &iwl1000_base_params, 312 312 .ht_params = &iwl1000_ht_params, 313 313 .led_mode = IWL_LED_RF_STATE, 314 + .use_new_eeprom_reading = true, 314 315 }; 315 316 316 317 struct iwl_cfg iwl100_bg_cfg = { ··· 325 324 .mod_params = &iwlagn_mod_params, 326 325 .base_params = &iwl1000_base_params, 327 326 .led_mode = IWL_LED_RF_STATE, 327 + .use_new_eeprom_reading = true, 328 328 }; 329 329 330 330 MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX));
+12
drivers/net/wireless/iwlwifi/iwl-6000.c
··· 564 564 .need_dc_calib = true, 565 565 .need_temp_offset_calib = true, 566 566 .led_mode = IWL_LED_RF_STATE, 567 + .use_new_eeprom_reading = true, 567 568 }; 568 569 569 570 struct iwl_cfg iwl6005_2abg_cfg = { ··· 580 579 .need_dc_calib = true, 581 580 .need_temp_offset_calib = true, 582 581 .led_mode = IWL_LED_RF_STATE, 582 + .use_new_eeprom_reading = true, 583 583 }; 584 584 585 585 struct iwl_cfg iwl6005_2bg_cfg = { ··· 596 594 .need_dc_calib = true, 597 595 .need_temp_offset_calib = true, 598 596 .led_mode = IWL_LED_RF_STATE, 597 + .use_new_eeprom_reading = true, 599 598 }; 600 599 601 600 struct iwl_cfg iwl6030_2agn_cfg = { ··· 617 614 .adv_pm = true, 618 615 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 619 616 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 617 + .use_new_eeprom_reading = true, 620 618 }; 621 619 622 620 struct iwl_cfg iwl6030_2abg_cfg = { ··· 637 633 .adv_pm = true, 638 634 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 639 635 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 636 + .use_new_eeprom_reading = true, 640 637 }; 641 638 642 639 struct iwl_cfg iwl6030_2bgn_cfg = { ··· 658 653 .adv_pm = true, 659 654 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 660 655 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 656 + .use_new_eeprom_reading = true, 661 657 }; 662 658 663 659 struct iwl_cfg iwl6030_2bg_cfg = { ··· 678 672 .adv_pm = true, 679 673 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 680 674 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 675 + .use_new_eeprom_reading = true, 681 676 }; 682 677 683 678 struct iwl_cfg iwl1030_bgn_cfg = { ··· 699 692 .adv_pm = true, 700 693 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 701 694 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 695 + .use_new_eeprom_reading = true, 702 696 }; 703 697 704 698 struct iwl_cfg iwl1030_bg_cfg = { ··· 719 711 .adv_pm = true, 720 712 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 721 713 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 714 + .use_new_eeprom_reading = true, 722 715 }; 723 716 724 717 /* ··· 802 793 .ht_params = &iwl6000_ht_params, 803 794 .need_dc_calib = true, 804 795 .led_mode = IWL_LED_RF_STATE, 796 + .use_new_eeprom_reading = true, 805 797 }; 806 798 807 799 struct iwl_cfg iwl6050_2abg_cfg = { ··· 851 841 .adv_pm = true, 852 842 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 853 843 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 844 + .use_new_eeprom_reading = true, 854 845 }; 855 846 856 847 struct iwl_cfg iwl130_bg_cfg = { ··· 870 859 .adv_pm = true, 871 860 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 872 861 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 862 + .use_new_eeprom_reading = true, 873 863 }; 874 864 875 865 MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
+86 -2
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
··· 433 433 /** 434 434 * iwlcore_eeprom_enhanced_txpower: process enhanced tx power info 435 435 */ 436 - void iwlcore_eeprom_enhanced_txpower(struct iwl_priv *priv) 436 + static void iwlcore_eeprom_enhanced_txpower_old(struct iwl_priv *priv) 437 437 { 438 438 int eeprom_section_count = 0; 439 439 int section, element; ··· 460 460 * always check for valid entry before process 461 461 * the information 462 462 */ 463 - if (!enhanced_txpower->common || enhanced_txpower->reserved) 463 + if (!(enhanced_txpower->flags || enhanced_txpower->channel) || 464 + enhanced_txpower->delta_20_in_40) 464 465 continue; 465 466 466 467 for (element = 0; element < eeprom_section_count; element++) { ··· 493 492 max_txpower_in_half_dbm; 494 493 } 495 494 } 495 + } 496 + 497 + static void 498 + iwlcore_eeprom_enh_txp_read_element(struct iwl_priv *priv, 499 + struct iwl_eeprom_enhanced_txpwr *txp, 500 + s8 max_txpower_avg) 501 + { 502 + int ch_idx; 503 + bool is_ht40 = txp->flags & IWL_EEPROM_ENH_TXP_FL_40MHZ; 504 + enum ieee80211_band band; 505 + 506 + band = txp->flags & IWL_EEPROM_ENH_TXP_FL_BAND_52G ? 507 + IEEE80211_BAND_5GHZ : IEEE80211_BAND_2GHZ; 508 + 509 + for (ch_idx = 0; ch_idx < priv->channel_count; ch_idx++) { 510 + struct iwl_channel_info *ch_info = &priv->channel_info[ch_idx]; 511 + 512 + /* update matching channel or from common data only */ 513 + if (txp->channel != 0 && ch_info->channel != txp->channel) 514 + continue; 515 + 516 + /* update matching band only */ 517 + if (band != ch_info->band) 518 + continue; 519 + 520 + if (ch_info->max_power_avg < max_txpower_avg && !is_ht40) { 521 + ch_info->max_power_avg = max_txpower_avg; 522 + ch_info->curr_txpow = max_txpower_avg; 523 + ch_info->scan_power = max_txpower_avg; 524 + } 525 + 526 + if (is_ht40 && ch_info->ht40_max_power_avg < max_txpower_avg) 527 + ch_info->ht40_max_power_avg = max_txpower_avg; 528 + } 529 + } 530 + 531 + #define EEPROM_TXP_OFFS (0x00 | INDIRECT_ADDRESS | INDIRECT_TXP_LIMIT) 532 + #define EEPROM_TXP_ENTRY_LEN sizeof(struct iwl_eeprom_enhanced_txpwr) 533 + #define EEPROM_TXP_SZ_OFFS (0x00 | INDIRECT_ADDRESS | INDIRECT_TXP_LIMIT_SIZE) 534 + 535 + static void iwlcore_eeprom_enhanced_txpower_new(struct iwl_priv *priv) 536 + { 537 + struct iwl_eeprom_enhanced_txpwr *txp_array, *txp; 538 + int idx, entries; 539 + __le16 *txp_len; 540 + s8 max_txp_avg, max_txp_avg_halfdbm; 541 + 542 + BUILD_BUG_ON(sizeof(struct iwl_eeprom_enhanced_txpwr) != 8); 543 + 544 + /* the length is in 16-bit words, but we want entries */ 545 + txp_len = (__le16 *) iwlagn_eeprom_query_addr(priv, EEPROM_TXP_SZ_OFFS); 546 + entries = le16_to_cpup(txp_len) * 2 / EEPROM_TXP_ENTRY_LEN; 547 + 548 + txp_array = (void *) iwlagn_eeprom_query_addr(priv, EEPROM_TXP_OFFS); 549 + for (idx = 0; idx < entries; idx++) { 550 + txp = &txp_array[idx]; 551 + 552 + /* skip invalid entries */ 553 + if (!(txp->flags & IWL_EEPROM_ENH_TXP_FL_VALID)) 554 + continue; 555 + 556 + max_txp_avg = iwl_get_max_txpower_avg(priv, txp_array, idx, 557 + &max_txp_avg_halfdbm); 558 + 559 + /* 560 + * Update the user limit values values to the highest 561 + * power supported by any channel 562 + */ 563 + if (max_txp_avg > priv->tx_power_user_lmt) 564 + priv->tx_power_user_lmt = max_txp_avg; 565 + if (max_txp_avg_halfdbm > priv->tx_power_lmt_in_half_dbm) 566 + priv->tx_power_lmt_in_half_dbm = max_txp_avg_halfdbm; 567 + 568 + iwlcore_eeprom_enh_txp_read_element(priv, txp, max_txp_avg); 569 + } 570 + } 571 + 572 + void iwlcore_eeprom_enhanced_txpower(struct iwl_priv *priv) 573 + { 574 + if (priv->cfg->use_new_eeprom_reading) 575 + iwlcore_eeprom_enhanced_txpower_new(priv); 576 + else 577 + iwlcore_eeprom_enhanced_txpower_old(priv); 496 578 }
+6
drivers/net/wireless/iwlwifi/iwl-agn-lib.c
··· 568 568 case INDIRECT_REGULATORY: 569 569 offset = iwl_eeprom_query16(priv, EEPROM_LINK_REGULATORY); 570 570 break; 571 + case INDIRECT_TXP_LIMIT: 572 + offset = iwl_eeprom_query16(priv, EEPROM_LINK_TXP_LIMIT); 573 + break; 574 + case INDIRECT_TXP_LIMIT_SIZE: 575 + offset = iwl_eeprom_query16(priv, EEPROM_LINK_TXP_LIMIT_SIZE); 576 + break; 571 577 case INDIRECT_CALIBRATION: 572 578 offset = iwl_eeprom_query16(priv, EEPROM_LINK_CALIBRATION); 573 579 break;
+1
drivers/net/wireless/iwlwifi/iwl-core.h
··· 412 412 u8 scan_tx_antennas[IEEE80211_NUM_BANDS]; 413 413 enum iwl_led_mode led_mode; 414 414 const bool adv_pm; 415 + const bool use_new_eeprom_reading; /* temporary, remove later */ 415 416 }; 416 417 417 418 /***************************
+21 -4
drivers/net/wireless/iwlwifi/iwl-eeprom.h
··· 129 129 s8 max_power_avg; /* max power (dBm) on this chnl, limit 31 */ 130 130 } __packed; 131 131 132 + enum iwl_eeprom_enhanced_txpwr_flags { 133 + IWL_EEPROM_ENH_TXP_FL_VALID = BIT(0), 134 + IWL_EEPROM_ENH_TXP_FL_BAND_52G = BIT(1), 135 + IWL_EEPROM_ENH_TXP_FL_OFDM = BIT(2), 136 + IWL_EEPROM_ENH_TXP_FL_40MHZ = BIT(3), 137 + IWL_EEPROM_ENH_TXP_FL_HT_AP = BIT(4), 138 + IWL_EEPROM_ENH_TXP_FL_RES1 = BIT(5), 139 + IWL_EEPROM_ENH_TXP_FL_RES2 = BIT(6), 140 + IWL_EEPROM_ENH_TXP_FL_COMMON_TYPE = BIT(7), 141 + }; 142 + 132 143 /** 133 144 * iwl_eeprom_enhanced_txpwr structure 134 145 * This structure presents the enhanced regulatory tx power limit layout ··· 147 136 * Enhanced regulatory tx power portion of eeprom image can be broken down 148 137 * into individual structures; each one is 8 bytes in size and contain the 149 138 * following information 150 - * @common: (desc + channel) not used by driver, should _NOT_ be "zero" 139 + * @flags: entry flags 140 + * @channel: channel number 151 141 * @chain_a_max_pwr: chain a max power in 1/2 dBm 152 142 * @chain_b_max_pwr: chain b max power in 1/2 dBm 153 143 * @chain_c_max_pwr: chain c max power in 1/2 dBm 154 - * @reserved: not used, should be "zero" 144 + * @delta_20_in_40: 20-in-40 deltas (hi/lo) 155 145 * @mimo2_max_pwr: mimo2 max power in 1/2 dBm 156 146 * @mimo3_max_pwr: mimo3 max power in 1/2 dBm 157 147 * 158 148 */ 159 149 struct iwl_eeprom_enhanced_txpwr { 160 - __le16 common; 150 + u8 flags; 151 + u8 channel; 161 152 s8 chain_a_max; 162 153 s8 chain_b_max; 163 154 s8 chain_c_max; 164 - s8 reserved; 155 + u8 delta_20_in_40; 165 156 s8 mimo2_max; 166 157 s8 mimo3_max; 167 158 } __packed; ··· 208 195 #define EEPROM_LINK_CALIBRATION (2*0x67) 209 196 #define EEPROM_LINK_PROCESS_ADJST (2*0x68) 210 197 #define EEPROM_LINK_OTHERS (2*0x69) 198 + #define EEPROM_LINK_TXP_LIMIT (2*0x6a) 199 + #define EEPROM_LINK_TXP_LIMIT_SIZE (2*0x6b) 211 200 212 201 /* agn regulatory - indirect access */ 213 202 #define EEPROM_REG_BAND_1_CHANNELS ((0x08)\ ··· 413 398 #define INDIRECT_CALIBRATION 0x00040000 414 399 #define INDIRECT_PROCESS_ADJST 0x00050000 415 400 #define INDIRECT_OTHERS 0x00060000 401 + #define INDIRECT_TXP_LIMIT 0x00070000 402 + #define INDIRECT_TXP_LIMIT_SIZE 0x00080000 416 403 #define INDIRECT_ADDRESS 0x00100000 417 404 418 405 /* General */
+1 -1
drivers/net/wireless/libertas/cfg.c
··· 617 617 print_ssid(ssid_buf, ssid, ssid_len), 618 618 LBS_SCAN_RSSI_TO_MBM(rssi)/100); 619 619 620 - if (channel || 620 + if (channel && 621 621 !(channel->flags & IEEE80211_CHAN_DISABLED)) 622 622 cfg80211_inform_bss(wiphy, channel, 623 623 bssid, le64_to_cpu(*(__le64 *)tsfdesc),
+6
drivers/net/wireless/p54/p54usb.c
··· 43 43 44 44 static struct usb_device_id p54u_table[] __devinitdata = { 45 45 /* Version 1 devices (pci chip + net2280) */ 46 + {USB_DEVICE(0x0411, 0x0050)}, /* Buffalo WLI2-USB2-G54 */ 46 47 {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ 47 48 {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ 48 49 {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ ··· 57 56 {USB_DEVICE(0x0846, 0x4220)}, /* Netgear WG111 */ 58 57 {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ 59 58 {USB_DEVICE(0x0cde, 0x0006)}, /* Medion 40900, Roper Europe */ 59 + {USB_DEVICE(0x0db0, 0x6826)}, /* MSI UB54G (MS-6826) */ 60 60 {USB_DEVICE(0x107b, 0x55f2)}, /* Gateway WGU-210 (Gemtek) */ 61 61 {USB_DEVICE(0x124a, 0x4023)}, /* Shuttle PN15, Airvast WM168g, IOGear GWU513 */ 62 + {USB_DEVICE(0x1435, 0x0210)}, /* Inventel UR054G */ 63 + {USB_DEVICE(0x15a9, 0x0002)}, /* Gemtek WUBI-100GW 802.11g */ 62 64 {USB_DEVICE(0x1630, 0x0005)}, /* 2Wire 802.11g USB (v1) / Z-Com */ 65 + {USB_DEVICE(0x182d, 0x096b)}, /* Sitecom WL-107 */ 63 66 {USB_DEVICE(0x1915, 0x2234)}, /* Linksys WUSB54G OEM */ 64 67 {USB_DEVICE(0x1915, 0x2235)}, /* Linksys WUSB54G Portable OEM */ 65 68 {USB_DEVICE(0x2001, 0x3701)}, /* DLink DWL-G120 Spinnaker */ ··· 99 94 {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ 100 95 {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ 101 96 {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ 97 + {USB_DEVICE(0x2001, 0x3705)}, /* D-Link DWL-G120 rev C1 */ 102 98 {USB_DEVICE(0x413c, 0x5513)}, /* Dell WLA3310 USB Wireless Adapter */ 103 99 {USB_DEVICE(0x413c, 0x8102)}, /* Spinnaker DUT */ 104 100 {USB_DEVICE(0x413c, 0x8104)}, /* Cohiba Proto board */
+3 -12
drivers/usb/atm/usbatm.c
··· 951 951 * condition: callbacks we register can be executed at once, before we have 952 952 * initialized the struct atm_dev. To protect against this, all callbacks 953 953 * abort if atm_dev->dev_data is NULL. */ 954 - atm_dev = atm_dev_register(instance->driver_name, &usbatm_atm_devops, -1, NULL); 954 + atm_dev = atm_dev_register(instance->driver_name, 955 + &instance->usb_intf->dev, &usbatm_atm_devops, 956 + -1, NULL); 955 957 if (!atm_dev) { 956 958 usb_err(instance, "%s: failed to register ATM device!\n", __func__); 957 959 return -1; ··· 967 965 968 966 /* temp init ATM device, set to 128kbit */ 969 967 atm_dev->link_rate = 128 * 1000 / 424; 970 - 971 - ret = sysfs_create_link(&atm_dev->class_dev.kobj, 972 - &instance->usb_intf->dev.kobj, "device"); 973 - if (ret) { 974 - atm_err(instance, "%s: sysfs_create_link failed: %d\n", 975 - __func__, ret); 976 - goto fail_sysfs; 977 - } 978 968 979 969 if (instance->driver->atm_start && ((ret = instance->driver->atm_start(instance, atm_dev)) < 0)) { 980 970 atm_err(instance, "%s: atm_start failed: %d!\n", __func__, ret); ··· 986 992 return 0; 987 993 988 994 fail: 989 - sysfs_remove_link(&atm_dev->class_dev.kobj, "device"); 990 - fail_sysfs: 991 995 instance->atm_dev = NULL; 992 996 atm_dev_deregister(atm_dev); /* usbatm_atm_dev_close will eventually be called */ 993 997 return ret; ··· 1321 1329 1322 1330 /* ATM finalize */ 1323 1331 if (instance->atm_dev) { 1324 - sysfs_remove_link(&instance->atm_dev->class_dev.kobj, "device"); 1325 1332 atm_dev_deregister(instance->atm_dev); 1326 1333 instance->atm_dev = NULL; 1327 1334 }
+4 -2
include/linux/atmdev.h
··· 427 427 428 428 #define ATM_SKB(skb) (((struct atm_skb_data *) (skb)->cb)) 429 429 430 - struct atm_dev *atm_dev_register(const char *type,const struct atmdev_ops *ops, 431 - int number,unsigned long *flags); /* number == -1: pick first available */ 430 + struct atm_dev *atm_dev_register(const char *type, struct device *parent, 431 + const struct atmdev_ops *ops, 432 + int number, /* -1 == pick first available */ 433 + unsigned long *flags); 432 434 struct atm_dev *atm_dev_lookup(int number); 433 435 void atm_dev_deregister(struct atm_dev *dev); 434 436
+1 -1
include/linux/netlink.h
··· 70 70 Check NLM_F_EXCL 71 71 */ 72 72 73 - #define NLMSG_ALIGNTO 4 73 + #define NLMSG_ALIGNTO 4U 74 74 #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) ) 75 75 #define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr))) 76 76 #define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(NLMSG_HDRLEN))
+3
include/net/sock.h
··· 769 769 void (*unhash)(struct sock *sk); 770 770 void (*rehash)(struct sock *sk); 771 771 int (*get_port)(struct sock *sk, unsigned short snum); 772 + void (*clear_sk)(struct sock *sk, int size); 772 773 773 774 /* Keeping track of sockets in use */ 774 775 #ifdef CONFIG_PROC_FS ··· 867 866 sk->sk_prot->unhash(sk); 868 867 sk->sk_prot->hash(sk); 869 868 } 869 + 870 + void sk_prot_clear_portaddr_nulls(struct sock *sk, int size); 870 871 871 872 /* About 10 seconds */ 872 873 #define SOCK_DESTROY_TIME (10*HZ)
+2 -1
net/atm/atm_sysfs.c
··· 143 143 .dev_uevent = atm_uevent, 144 144 }; 145 145 146 - int atm_register_sysfs(struct atm_dev *adev) 146 + int atm_register_sysfs(struct atm_dev *adev, struct device *parent) 147 147 { 148 148 struct device *cdev = &adev->class_dev; 149 149 int i, j, err; 150 150 151 151 cdev->class = &atm_class; 152 + cdev->parent = parent; 152 153 dev_set_drvdata(cdev, adev); 153 154 154 155 dev_set_name(cdev, "%s%d", adev->type, adev->number);
+4 -3
net/atm/resources.c
··· 74 74 } 75 75 EXPORT_SYMBOL(atm_dev_lookup); 76 76 77 - struct atm_dev *atm_dev_register(const char *type, const struct atmdev_ops *ops, 78 - int number, unsigned long *flags) 77 + struct atm_dev *atm_dev_register(const char *type, struct device *parent, 78 + const struct atmdev_ops *ops, int number, 79 + unsigned long *flags) 79 80 { 80 81 struct atm_dev *dev, *inuse; 81 82 ··· 116 115 goto out_fail; 117 116 } 118 117 119 - if (atm_register_sysfs(dev) < 0) { 118 + if (atm_register_sysfs(dev, parent) < 0) { 120 119 pr_err("atm_register_sysfs failed for dev %s\n", type); 121 120 atm_proc_dev_deregister(dev); 122 121 goto out_fail;
+1 -1
net/atm/resources.h
··· 42 42 43 43 #endif /* CONFIG_PROC_FS */ 44 44 45 - int atm_register_sysfs(struct atm_dev *adev); 45 + int atm_register_sysfs(struct atm_dev *adev, struct device *parent); 46 46 void atm_unregister_sysfs(struct atm_dev *adev); 47 47 #endif
+1
net/bluetooth/rfcomm/core.c
··· 311 311 d->state = BT_OPEN; 312 312 d->flags = 0; 313 313 d->mscex = 0; 314 + d->sec_level = BT_SECURITY_LOW; 314 315 d->mtu = RFCOMM_DEFAULT_MTU; 315 316 d->v24_sig = RFCOMM_V24_RTC | RFCOMM_V24_RTR | RFCOMM_V24_DV; 316 317
+1 -1
net/bridge/br_multicast.c
··· 445 445 ip6h = ipv6_hdr(skb); 446 446 447 447 *(__force __be32 *)ip6h = htonl(0x60000000); 448 - ip6h->payload_len = 8 + sizeof(*mldq); 448 + ip6h->payload_len = htons(8 + sizeof(*mldq)); 449 449 ip6h->nexthdr = IPPROTO_HOPOPTS; 450 450 ip6h->hop_limit = 1; 451 451 ipv6_addr_set(&ip6h->saddr, 0, 0, 0, 0);
+35 -12
net/core/sock.c
··· 1010 1010 #endif 1011 1011 } 1012 1012 1013 + /* 1014 + * caches using SLAB_DESTROY_BY_RCU should let .next pointer from nulls nodes 1015 + * un-modified. Special care is taken when initializing object to zero. 1016 + */ 1017 + static inline void sk_prot_clear_nulls(struct sock *sk, int size) 1018 + { 1019 + if (offsetof(struct sock, sk_node.next) != 0) 1020 + memset(sk, 0, offsetof(struct sock, sk_node.next)); 1021 + memset(&sk->sk_node.pprev, 0, 1022 + size - offsetof(struct sock, sk_node.pprev)); 1023 + } 1024 + 1025 + void sk_prot_clear_portaddr_nulls(struct sock *sk, int size) 1026 + { 1027 + unsigned long nulls1, nulls2; 1028 + 1029 + nulls1 = offsetof(struct sock, __sk_common.skc_node.next); 1030 + nulls2 = offsetof(struct sock, __sk_common.skc_portaddr_node.next); 1031 + if (nulls1 > nulls2) 1032 + swap(nulls1, nulls2); 1033 + 1034 + if (nulls1 != 0) 1035 + memset((char *)sk, 0, nulls1); 1036 + memset((char *)sk + nulls1 + sizeof(void *), 0, 1037 + nulls2 - nulls1 - sizeof(void *)); 1038 + memset((char *)sk + nulls2 + sizeof(void *), 0, 1039 + size - nulls2 - sizeof(void *)); 1040 + } 1041 + EXPORT_SYMBOL(sk_prot_clear_portaddr_nulls); 1042 + 1013 1043 static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority, 1014 1044 int family) 1015 1045 { ··· 1052 1022 if (!sk) 1053 1023 return sk; 1054 1024 if (priority & __GFP_ZERO) { 1055 - /* 1056 - * caches using SLAB_DESTROY_BY_RCU should let 1057 - * sk_node.next un-modified. Special care is taken 1058 - * when initializing object to zero. 1059 - */ 1060 - if (offsetof(struct sock, sk_node.next) != 0) 1061 - memset(sk, 0, offsetof(struct sock, sk_node.next)); 1062 - memset(&sk->sk_node.pprev, 0, 1063 - prot->obj_size - offsetof(struct sock, 1064 - sk_node.pprev)); 1025 + if (prot->clear_sk) 1026 + prot->clear_sk(sk, prot->obj_size); 1027 + else 1028 + sk_prot_clear_nulls(sk, prot->obj_size); 1065 1029 } 1066 - } 1067 - else 1030 + } else 1068 1031 sk = kmalloc(prot->obj_size, priority); 1069 1032 1070 1033 if (sk != NULL) {
+4 -2
net/core/timestamping.c
··· 96 96 struct phy_device *phydev; 97 97 unsigned int type; 98 98 99 - skb_push(skb, ETH_HLEN); 99 + if (skb_headroom(skb) < ETH_HLEN) 100 + return false; 101 + __skb_push(skb, ETH_HLEN); 100 102 101 103 type = classify(skb); 102 104 103 - skb_pull(skb, ETH_HLEN); 105 + __skb_pull(skb, ETH_HLEN); 104 106 105 107 switch (type) { 106 108 case PTP_CLASS_V1_IPV4:
+5 -1
net/econet/af_econet.c
··· 851 851 { 852 852 struct iphdr *ip = ip_hdr(skb); 853 853 unsigned char stn = ntohl(ip->saddr) & 0xff; 854 + struct dst_entry *dst = skb_dst(skb); 855 + struct ec_device *edev = NULL; 854 856 struct sock *sk = NULL; 855 857 struct sk_buff *newskb; 856 - struct ec_device *edev = skb->dev->ec_ptr; 858 + 859 + if (dst) 860 + edev = dst->dev->ec_ptr; 857 861 858 862 if (! edev) 859 863 goto bad;
+1
net/ipv4/udp.c
··· 1897 1897 .compat_setsockopt = compat_udp_setsockopt, 1898 1898 .compat_getsockopt = compat_udp_getsockopt, 1899 1899 #endif 1900 + .clear_sk = sk_prot_clear_portaddr_nulls, 1900 1901 }; 1901 1902 EXPORT_SYMBOL(udp_prot); 1902 1903
+1
net/ipv4/udplite.c
··· 57 57 .compat_setsockopt = compat_udp_setsockopt, 58 58 .compat_getsockopt = compat_udp_getsockopt, 59 59 #endif 60 + .clear_sk = sk_prot_clear_portaddr_nulls, 60 61 }; 61 62 EXPORT_SYMBOL(udplite_prot); 62 63
+5 -3
net/ipv6/addrconf.c
··· 2669 2669 2670 2670 ASSERT_RTNL(); 2671 2671 2672 - rt6_ifdown(net, dev); 2672 + /* Flush routes if device is being removed or it is not loopback */ 2673 + if (how || !(dev->flags & IFF_LOOPBACK)) 2674 + rt6_ifdown(net, dev); 2673 2675 neigh_ifdown(&nd_tbl, dev); 2674 2676 2675 2677 idev = __in6_dev_get(dev); ··· 4059 4057 kfree_skb(skb); 4060 4058 goto errout; 4061 4059 } 4062 - rtnl_notify(skb, net, 0, RTNLGRP_IPV6_IFADDR, NULL, GFP_ATOMIC); 4060 + rtnl_notify(skb, net, 0, RTNLGRP_IPV6_IFINFO, NULL, GFP_ATOMIC); 4063 4061 return; 4064 4062 errout: 4065 4063 if (err < 0) 4066 - rtnl_set_sk_err(net, RTNLGRP_IPV6_IFADDR, err); 4064 + rtnl_set_sk_err(net, RTNLGRP_IPV6_IFINFO, err); 4067 4065 } 4068 4066 4069 4067 static inline size_t inet6_prefix_nlmsg_size(void)
+6 -1
net/ipv6/route.c
··· 1566 1566 { 1567 1567 struct rt6_info *rt, *nrt; 1568 1568 int allfrag = 0; 1569 - 1569 + again: 1570 1570 rt = rt6_lookup(net, daddr, saddr, ifindex, 0); 1571 1571 if (rt == NULL) 1572 1572 return; 1573 + 1574 + if (rt6_check_expired(rt)) { 1575 + ip6_del_rt(rt); 1576 + goto again; 1577 + } 1573 1578 1574 1579 if (pmtu >= dst_mtu(&rt->dst)) 1575 1580 goto out;
+1
net/ipv6/udp.c
··· 1477 1477 .compat_setsockopt = compat_udpv6_setsockopt, 1478 1478 .compat_getsockopt = compat_udpv6_getsockopt, 1479 1479 #endif 1480 + .clear_sk = sk_prot_clear_portaddr_nulls, 1480 1481 }; 1481 1482 1482 1483 static struct inet_protosw udpv6_protosw = {
+1
net/ipv6/udplite.c
··· 55 55 .compat_setsockopt = compat_udpv6_setsockopt, 56 56 .compat_getsockopt = compat_udpv6_getsockopt, 57 57 #endif 58 + .clear_sk = sk_prot_clear_portaddr_nulls, 58 59 }; 59 60 60 61 static struct inet_protosw udplite6_protosw = {
+4
net/mac80211/ibss.c
··· 780 780 781 781 mutex_lock(&sdata->u.ibss.mtx); 782 782 783 + if (!sdata->u.ibss.ssid_len) 784 + goto mgmt_out; /* not ready to merge yet */ 785 + 783 786 switch (fc & IEEE80211_FCTL_STYPE) { 784 787 case IEEE80211_STYPE_PROBE_REQ: 785 788 ieee80211_rx_mgmt_probe_req(sdata, mgmt, skb->len); ··· 800 797 break; 801 798 } 802 799 800 + mgmt_out: 803 801 mutex_unlock(&sdata->u.ibss.mtx); 804 802 } 805 803
+4 -1
net/mac80211/work.c
··· 1074 1074 { 1075 1075 struct ieee80211_local *local = sdata->local; 1076 1076 struct ieee80211_work *wk; 1077 + bool cleanup = false; 1077 1078 1078 1079 mutex_lock(&local->mtx); 1079 1080 list_for_each_entry(wk, &local->work_list, list) { 1080 1081 if (wk->sdata != sdata) 1081 1082 continue; 1083 + cleanup = true; 1082 1084 wk->type = IEEE80211_WORK_ABORT; 1083 1085 wk->started = true; 1084 1086 wk->timeout = jiffies; ··· 1088 1086 mutex_unlock(&local->mtx); 1089 1087 1090 1088 /* run cleanups etc. */ 1091 - ieee80211_work_work(&local->work_work); 1089 + if (cleanup) 1090 + ieee80211_work_work(&local->work_work); 1092 1091 1093 1092 mutex_lock(&local->mtx); 1094 1093 list_for_each_entry(wk, &local->work_list, list) {
+9 -1
net/sctp/socket.c
··· 2932 2932 struct sctp_association *asoc = NULL; 2933 2933 struct sctp_setpeerprim prim; 2934 2934 struct sctp_chunk *chunk; 2935 + struct sctp_af *af; 2935 2936 int err; 2936 2937 2937 2938 sp = sctp_sk(sk); ··· 2959 2958 2960 2959 if (!sctp_state(asoc, ESTABLISHED)) 2961 2960 return -ENOTCONN; 2961 + 2962 + af = sctp_get_af_specific(prim.sspp_addr.ss_family); 2963 + if (!af) 2964 + return -EINVAL; 2965 + 2966 + if (!af->addr_valid((union sctp_addr *)&prim.sspp_addr, sp, NULL)) 2967 + return -EADDRNOTAVAIL; 2962 2968 2963 2969 if (!sctp_assoc_lookup_laddr(asoc, (union sctp_addr *)&prim.sspp_addr)) 2964 2970 return -EADDRNOTAVAIL; ··· 5053 5045 if (copy_to_user(optval, &val, len)) 5054 5046 return -EFAULT; 5055 5047 5056 - return -ENOTSUPP; 5048 + return 0; 5057 5049 } 5058 5050 5059 5051 /*
+15
net/socket.c
··· 732 732 return ret; 733 733 } 734 734 735 + /** 736 + * kernel_recvmsg - Receive a message from a socket (kernel space) 737 + * @sock: The socket to receive the message from 738 + * @msg: Received message 739 + * @vec: Input s/g array for message data 740 + * @num: Size of input s/g array 741 + * @size: Number of bytes to read 742 + * @flags: Message flags (MSG_DONTWAIT, etc...) 743 + * 744 + * On return the msg structure contains the scatter/gather array passed in the 745 + * vec argument. The array is modified so that it consists of the unfilled 746 + * portion of the original array. 747 + * 748 + * The returned value is the total number of bytes received, or an error. 749 + */ 735 750 int kernel_recvmsg(struct socket *sock, struct msghdr *msg, 736 751 struct kvec *vec, size_t num, size_t size, int flags) 737 752 {
+1 -1
net/xfrm/xfrm_state.c
··· 1268 1268 1269 1269 return xc; 1270 1270 error: 1271 - kfree(xc); 1271 + xfrm_state_put(xc); 1272 1272 return NULL; 1273 1273 } 1274 1274 EXPORT_SYMBOL(xfrm_state_migrate);