Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (47 commits)
sysctl: net: call unregister_net_sysctl_table where needed
Revert: veth: remove unneeded ifname code from veth_newlink()
smsc95xx: fix reset check
tg3: Fix failure to enable WoL by default when possible
networking: inappropriate ioctl operation should return ENOTTY
amd8111e: trivial typo spelling: Negotitate -> Negotiate
ipv4: don't spam dmesg with "Using LC-trie" messages
af_unix: Only allow recv on connected seqpacket sockets.
mii: add support of pause frames in mii_get_an
net: ftmac100: fix scheduling while atomic during PHY link status change
usbnet: Transfer of maintainership
usbnet: add support for some Huawei modems with cdc-ether ports
bnx2: cancel timer on device removal
iwl4965: fix "Received BA when not expected"
iwlagn: fix "Received BA when not expected"
dsa/mv88e6131: fix unknown multicast/broadcast forwarding on mv88e6085
usbnet: Resubmit interrupt URB if device is open
iwl4965: fix "TX Power requested while scanning"
iwlegacy: led stay solid on when no traffic
b43: trivial: update module info about ucode16_mimo firmware
...

+338 -134
+1 -1
MAINTAINERS
··· 6556 F: drivers/usb/host/uhci* 6557 6558 USB "USBNET" DRIVER FRAMEWORK 6559 - M: David Brownell <dbrownell@users.sourceforge.net> 6560 L: netdev@vger.kernel.org 6561 W: http://www.linux-usb.org/usbnet 6562 S: Maintained
··· 6556 F: drivers/usb/host/uhci* 6557 6558 USB "USBNET" DRIVER FRAMEWORK 6559 + M: Oliver Neukum <oneukum@suse.de> 6560 L: netdev@vger.kernel.org 6561 W: http://www.linux-usb.org/usbnet 6562 S: Maintained
+2 -2
arch/powerpc/include/asm/8xx_immap.h
··· 393 uint fec_addr_low; /* lower 32 bits of station address */ 394 ushort fec_addr_high; /* upper 16 bits of station address */ 395 ushort res1; /* reserved */ 396 - uint fec_hash_table_high; /* upper 32-bits of hash table */ 397 - uint fec_hash_table_low; /* lower 32-bits of hash table */ 398 uint fec_r_des_start; /* beginning of Rx descriptor ring */ 399 uint fec_x_des_start; /* beginning of Tx descriptor ring */ 400 uint fec_r_buff_size; /* Rx buffer size */
··· 393 uint fec_addr_low; /* lower 32 bits of station address */ 394 ushort fec_addr_high; /* upper 16 bits of station address */ 395 ushort res1; /* reserved */ 396 + uint fec_grp_hash_table_high; /* upper 32-bits of hash table */ 397 + uint fec_grp_hash_table_low; /* lower 32-bits of hash table */ 398 uint fec_r_des_start; /* beginning of Rx descriptor ring */ 399 uint fec_x_des_start; /* beginning of Tx descriptor ring */ 400 uint fec_r_buff_size; /* Rx buffer size */
+1 -1
drivers/net/amd8111e.c
··· 106 MODULE_LICENSE("GPL"); 107 MODULE_DEVICE_TABLE(pci, amd8111e_pci_tbl); 108 module_param_array(speed_duplex, int, NULL, 0); 109 - MODULE_PARM_DESC(speed_duplex, "Set device speed and duplex modes, 0: Auto Negotitate, 1: 10Mbps Half Duplex, 2: 10Mbps Full Duplex, 3: 100Mbps Half Duplex, 4: 100Mbps Full Duplex"); 110 module_param_array(coalesce, bool, NULL, 0); 111 MODULE_PARM_DESC(coalesce, "Enable or Disable interrupt coalescing, 1: Enable, 0: Disable"); 112 module_param_array(dynamic_ipg, bool, NULL, 0);
··· 106 MODULE_LICENSE("GPL"); 107 MODULE_DEVICE_TABLE(pci, amd8111e_pci_tbl); 108 module_param_array(speed_duplex, int, NULL, 0); 109 + MODULE_PARM_DESC(speed_duplex, "Set device speed and duplex modes, 0: Auto Negotiate, 1: 10Mbps Half Duplex, 2: 10Mbps Full Duplex, 3: 100Mbps Half Duplex, 4: 100Mbps Full Duplex"); 110 module_param_array(coalesce, bool, NULL, 0); 111 MODULE_PARM_DESC(coalesce, "Enable or Disable interrupt coalescing, 1: Enable, 0: Disable"); 112 module_param_array(dynamic_ipg, bool, NULL, 0);
+3 -3
drivers/net/atl1c/atl1c.h
··· 566 #define __AT_TESTING 0x0001 567 #define __AT_RESETTING 0x0002 568 #define __AT_DOWN 0x0003 569 - u8 work_event; 570 - #define ATL1C_WORK_EVENT_RESET 0x01 571 - #define ATL1C_WORK_EVENT_LINK_CHANGE 0x02 572 u32 msg_enable; 573 574 bool have_msi;
··· 566 #define __AT_TESTING 0x0001 567 #define __AT_RESETTING 0x0002 568 #define __AT_DOWN 0x0003 569 + unsigned long work_event; 570 + #define ATL1C_WORK_EVENT_RESET 0 571 + #define ATL1C_WORK_EVENT_LINK_CHANGE 1 572 u32 msg_enable; 573 574 bool have_msi;
+5 -9
drivers/net/atl1c/atl1c_main.c
··· 325 } 326 } 327 328 - adapter->work_event |= ATL1C_WORK_EVENT_LINK_CHANGE; 329 schedule_work(&adapter->common_task); 330 } 331 ··· 337 adapter = container_of(work, struct atl1c_adapter, common_task); 338 netdev = adapter->netdev; 339 340 - if (adapter->work_event & ATL1C_WORK_EVENT_RESET) { 341 - adapter->work_event &= ~ATL1C_WORK_EVENT_RESET; 342 netif_device_detach(netdev); 343 atl1c_down(adapter); 344 atl1c_up(adapter); 345 netif_device_attach(netdev); 346 - return; 347 } 348 349 - if (adapter->work_event & ATL1C_WORK_EVENT_LINK_CHANGE) { 350 - adapter->work_event &= ~ATL1C_WORK_EVENT_LINK_CHANGE; 351 atl1c_check_link_status(adapter); 352 - } 353 - return; 354 } 355 356 ··· 365 struct atl1c_adapter *adapter = netdev_priv(netdev); 366 367 /* Do the reset outside of interrupt context */ 368 - adapter->work_event |= ATL1C_WORK_EVENT_RESET; 369 schedule_work(&adapter->common_task); 370 } 371
··· 325 } 326 } 327 328 + set_bit(ATL1C_WORK_EVENT_LINK_CHANGE, &adapter->work_event); 329 schedule_work(&adapter->common_task); 330 } 331 ··· 337 adapter = container_of(work, struct atl1c_adapter, common_task); 338 netdev = adapter->netdev; 339 340 + if (test_and_clear_bit(ATL1C_WORK_EVENT_RESET, &adapter->work_event)) { 341 netif_device_detach(netdev); 342 atl1c_down(adapter); 343 atl1c_up(adapter); 344 netif_device_attach(netdev); 345 } 346 347 + if (test_and_clear_bit(ATL1C_WORK_EVENT_LINK_CHANGE, 348 + &adapter->work_event)) 349 atl1c_check_link_status(adapter); 350 } 351 352 ··· 369 struct atl1c_adapter *adapter = netdev_priv(netdev); 370 371 /* Do the reset outside of interrupt context */ 372 + set_bit(ATL1C_WORK_EVENT_RESET, &adapter->work_event); 373 schedule_work(&adapter->common_task); 374 } 375
+1
drivers/net/benet/be_main.c
··· 1873 be_detect_dump_ue(adapter); 1874 1875 reschedule: 1876 schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000)); 1877 } 1878
··· 1873 be_detect_dump_ue(adapter); 1874 1875 reschedule: 1876 + adapter->work_counter++; 1877 schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000)); 1878 } 1879
+2
drivers/net/bnx2.c
··· 8413 8414 unregister_netdev(dev); 8415 8416 if (bp->mips_firmware) 8417 release_firmware(bp->mips_firmware); 8418 if (bp->rv2p_firmware)
··· 8413 8414 unregister_netdev(dev); 8415 8416 + del_timer_sync(&bp->timer); 8417 + 8418 if (bp->mips_firmware) 8419 release_firmware(bp->mips_firmware); 8420 if (bp->rv2p_firmware)
+24 -10
drivers/net/bnx2x/bnx2x_cmn.c
··· 2019 static inline u8 bnx2x_set_pbd_csum_e2(struct bnx2x *bp, struct sk_buff *skb, 2020 u32 *parsing_data, u32 xmit_type) 2021 { 2022 - *parsing_data |= ((tcp_hdrlen(skb)/4) << 2023 - ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW_SHIFT) & 2024 - ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW; 2025 2026 - *parsing_data |= ((((u8 *)tcp_hdr(skb) - skb->data) / 2) << 2027 - ETH_TX_PARSE_BD_E2_TCP_HDR_START_OFFSET_W_SHIFT) & 2028 - ETH_TX_PARSE_BD_E2_TCP_HDR_START_OFFSET_W; 2029 2030 - return skb_transport_header(skb) + tcp_hdrlen(skb) - skb->data; 2031 } 2032 2033 /** ··· 2051 struct eth_tx_parse_bd_e1x *pbd, 2052 u32 xmit_type) 2053 { 2054 - u8 hlen = (skb_network_header(skb) - skb->data) / 2; 2055 2056 /* for now NS flag is not used in Linux */ 2057 pbd->global_data = ··· 2059 ETH_TX_PARSE_BD_E1X_LLC_SNAP_EN_SHIFT)); 2060 2061 pbd->ip_hlen_w = (skb_transport_header(skb) - 2062 - skb_network_header(skb)) / 2; 2063 2064 - hlen += pbd->ip_hlen_w + tcp_hdrlen(skb) / 2; 2065 2066 pbd->total_hlen_w = cpu_to_le16(hlen); 2067 hlen = hlen*2;
··· 2019 static inline u8 bnx2x_set_pbd_csum_e2(struct bnx2x *bp, struct sk_buff *skb, 2020 u32 *parsing_data, u32 xmit_type) 2021 { 2022 + *parsing_data |= 2023 + ((((u8 *)skb_transport_header(skb) - skb->data) >> 1) << 2024 + ETH_TX_PARSE_BD_E2_TCP_HDR_START_OFFSET_W_SHIFT) & 2025 + ETH_TX_PARSE_BD_E2_TCP_HDR_START_OFFSET_W; 2026 2027 + if (xmit_type & XMIT_CSUM_TCP) { 2028 + *parsing_data |= ((tcp_hdrlen(skb) / 4) << 2029 + ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW_SHIFT) & 2030 + ETH_TX_PARSE_BD_E2_TCP_HDR_LENGTH_DW; 2031 2032 + return skb_transport_header(skb) + tcp_hdrlen(skb) - skb->data; 2033 + } else 2034 + /* We support checksum offload for TCP and UDP only. 2035 + * No need to pass the UDP header length - it's a constant. 2036 + */ 2037 + return skb_transport_header(skb) + 2038 + sizeof(struct udphdr) - skb->data; 2039 } 2040 2041 /** ··· 2043 struct eth_tx_parse_bd_e1x *pbd, 2044 u32 xmit_type) 2045 { 2046 + u8 hlen = (skb_network_header(skb) - skb->data) >> 1; 2047 2048 /* for now NS flag is not used in Linux */ 2049 pbd->global_data = ··· 2051 ETH_TX_PARSE_BD_E1X_LLC_SNAP_EN_SHIFT)); 2052 2053 pbd->ip_hlen_w = (skb_transport_header(skb) - 2054 + skb_network_header(skb)) >> 1; 2055 2056 + hlen += pbd->ip_hlen_w; 2057 + 2058 + /* We support checksum offload for TCP and UDP only */ 2059 + if (xmit_type & XMIT_CSUM_TCP) 2060 + hlen += tcp_hdrlen(skb) / 2; 2061 + else 2062 + hlen += sizeof(struct udphdr) / 2; 2063 2064 pbd->total_hlen_w = cpu_to_le16(hlen); 2065 hlen = hlen*2;
+5 -2
drivers/net/bonding/bond_3ad.c
··· 1482 1483 static int agg_device_up(const struct aggregator *agg) 1484 { 1485 - return (netif_running(agg->slave->dev) && 1486 - netif_carrier_ok(agg->slave->dev)); 1487 } 1488 1489 /**
··· 1482 1483 static int agg_device_up(const struct aggregator *agg) 1484 { 1485 + struct port *port = agg->lag_ports; 1486 + if (!port) 1487 + return 0; 1488 + return (netif_running(port->slave->dev) && 1489 + netif_carrier_ok(port->slave->dev)); 1490 } 1491 1492 /**
+6 -3
drivers/net/ehea/ehea_main.c
··· 3040 3041 if (dev->flags & IFF_UP) { 3042 mutex_lock(&port->port_lock); 3043 - port_napi_enable(port); 3044 ret = ehea_restart_qps(dev); 3045 - check_sqs(port); 3046 - if (!ret) 3047 netif_wake_queue(dev); 3048 mutex_unlock(&port->port_lock); 3049 } 3050 }
··· 3040 3041 if (dev->flags & IFF_UP) { 3042 mutex_lock(&port->port_lock); 3043 ret = ehea_restart_qps(dev); 3044 + if (!ret) { 3045 + check_sqs(port); 3046 + port_napi_enable(port); 3047 netif_wake_queue(dev); 3048 + } else { 3049 + netdev_err(dev, "Unable to restart QPS\n"); 3050 + } 3051 mutex_unlock(&port->port_lock); 3052 } 3053 }
+4 -4
drivers/net/fs_enet/mac-fec.c
··· 226 } 227 228 FC(fecp, r_cntrl, FEC_RCNTRL_PROM); 229 - FW(fecp, hash_table_high, fep->fec.hthi); 230 - FW(fecp, hash_table_low, fep->fec.htlo); 231 } 232 233 static void set_multicast_list(struct net_device *dev) ··· 273 /* 274 * Reset all multicast. 275 */ 276 - FW(fecp, hash_table_high, fep->fec.hthi); 277 - FW(fecp, hash_table_low, fep->fec.htlo); 278 279 /* 280 * Set maximum receive buffer size.
··· 226 } 227 228 FC(fecp, r_cntrl, FEC_RCNTRL_PROM); 229 + FW(fecp, grp_hash_table_high, fep->fec.hthi); 230 + FW(fecp, grp_hash_table_low, fep->fec.htlo); 231 } 232 233 static void set_multicast_list(struct net_device *dev) ··· 273 /* 274 * Reset all multicast. 275 */ 276 + FW(fecp, grp_hash_table_high, fep->fec.hthi); 277 + FW(fecp, grp_hash_table_low, fep->fec.htlo); 278 279 /* 280 * Set maximum receive buffer size.
+4 -4
drivers/net/ftmac100.c
··· 139 * that hardware reset completed (what the f*ck). 140 * We still need to wait for a while. 141 */ 142 - usleep_range(500, 1000); 143 return 0; 144 } 145 146 - usleep_range(1000, 10000); 147 } 148 149 netdev_err(netdev, "software reset failed\n"); ··· 772 if ((phycr & FTMAC100_PHYCR_MIIRD) == 0) 773 return phycr & FTMAC100_PHYCR_MIIRDATA; 774 775 - usleep_range(100, 1000); 776 } 777 778 netdev_err(netdev, "mdio read timed out\n"); ··· 801 if ((phycr & FTMAC100_PHYCR_MIIWR) == 0) 802 return; 803 804 - usleep_range(100, 1000); 805 } 806 807 netdev_err(netdev, "mdio write timed out\n");
··· 139 * that hardware reset completed (what the f*ck). 140 * We still need to wait for a while. 141 */ 142 + udelay(500); 143 return 0; 144 } 145 146 + udelay(1000); 147 } 148 149 netdev_err(netdev, "software reset failed\n"); ··· 772 if ((phycr & FTMAC100_PHYCR_MIIRD) == 0) 773 return phycr & FTMAC100_PHYCR_MIIRDATA; 774 775 + udelay(100); 776 } 777 778 netdev_err(netdev, "mdio read timed out\n"); ··· 801 if ((phycr & FTMAC100_PHYCR_MIIWR) == 0) 802 return; 803 804 + udelay(100); 805 } 806 807 netdev_err(netdev, "mdio write timed out\n");
+4
drivers/net/mii.c
··· 49 result |= ADVERTISED_100baseT_Half; 50 if (advert & ADVERTISE_100FULL) 51 result |= ADVERTISED_100baseT_Full; 52 53 return result; 54 }
··· 49 result |= ADVERTISED_100baseT_Half; 50 if (advert & ADVERTISE_100FULL) 51 result |= ADVERTISED_100baseT_Full; 52 + if (advert & ADVERTISE_PAUSE_CAP) 53 + result |= ADVERTISED_Pause; 54 + if (advert & ADVERTISE_PAUSE_ASYM) 55 + result |= ADVERTISED_Asym_Pause; 56 57 return result; 58 }
+8
drivers/net/netconsole.c
··· 671 goto done; 672 673 spin_lock_irqsave(&target_list_lock, flags); 674 list_for_each_entry(nt, &target_list, list) { 675 netconsole_target_get(nt); 676 if (nt->np.dev == dev) { ··· 684 * rtnl_lock already held 685 */ 686 if (nt->np.dev) { 687 __netpoll_cleanup(&nt->np); 688 dev_put(nt->np.dev); 689 nt->np.dev = NULL; 690 } 691 /* Fall through */ 692 case NETDEV_GOING_DOWN:
··· 671 goto done; 672 673 spin_lock_irqsave(&target_list_lock, flags); 674 + restart: 675 list_for_each_entry(nt, &target_list, list) { 676 netconsole_target_get(nt); 677 if (nt->np.dev == dev) { ··· 683 * rtnl_lock already held 684 */ 685 if (nt->np.dev) { 686 + spin_unlock_irqrestore( 687 + &target_list_lock, 688 + flags); 689 __netpoll_cleanup(&nt->np); 690 + spin_lock_irqsave(&target_list_lock, 691 + flags); 692 dev_put(nt->np.dev); 693 nt->np.dev = NULL; 694 + netconsole_target_put(nt); 695 + goto restart; 696 } 697 /* Fall through */ 698 case NETDEV_GOING_DOWN:
+71 -28
drivers/net/r8169.c
··· 170 }; 171 #undef _R 172 173 enum cfg_version { 174 RTL_CFG_0 = 0x00, 175 RTL_CFG_1, ··· 575 u32 saved_wolopts; 576 577 const struct firmware *fw; 578 }; 579 580 MODULE_AUTHOR("Realtek and the Linux r8169 crew <netdev@vger.kernel.org>"); ··· 1800 1801 static void rtl_release_firmware(struct rtl8169_private *tp) 1802 { 1803 - release_firmware(tp->fw); 1804 - tp->fw = NULL; 1805 } 1806 1807 - static int rtl_apply_firmware(struct rtl8169_private *tp, const char *fw_name) 1808 { 1809 - const struct firmware **fw = &tp->fw; 1810 - int rc = !*fw; 1811 - 1812 - if (rc) { 1813 - rc = request_firmware(fw, fw_name, &tp->pci_dev->dev); 1814 - if (rc < 0) 1815 - goto out; 1816 - } 1817 1818 /* TODO: release firmware once rtl_phy_write_fw signals failures. */ 1819 - rtl_phy_write_fw(tp, *fw); 1820 - out: 1821 - return rc; 1822 } 1823 1824 static void rtl8169s_hw_phy_config(struct rtl8169_private *tp) ··· 2258 2259 rtl_writephy(tp, 0x1f, 0x0005); 2260 rtl_writephy(tp, 0x05, 0x001b); 2261 - if ((rtl_readphy(tp, 0x06) != 0xbf00) || 2262 - (rtl_apply_firmware(tp, FIRMWARE_8168D_1) < 0)) { 2263 - netif_warn(tp, probe, tp->dev, "unable to apply firmware patch\n"); 2264 - } 2265 2266 rtl_writephy(tp, 0x1f, 0x0000); 2267 } ··· 2361 2362 rtl_writephy(tp, 0x1f, 0x0005); 2363 rtl_writephy(tp, 0x05, 0x001b); 2364 - if ((rtl_readphy(tp, 0x06) != 0xb300) || 2365 - (rtl_apply_firmware(tp, FIRMWARE_8168D_2) < 0)) { 2366 - netif_warn(tp, probe, tp->dev, "unable to apply firmware patch\n"); 2367 - } 2368 2369 rtl_writephy(tp, 0x1f, 0x0000); 2370 } ··· 2482 rtl_writephy(tp, 0x18, 0x0310); 2483 msleep(100); 2484 2485 - if (rtl_apply_firmware(tp, FIRMWARE_8105E_1) < 0) 2486 - netif_warn(tp, probe, tp->dev, "unable to apply firmware patch\n"); 2487 2488 rtl_writephy_batch(tp, phy_reg_init, ARRAY_SIZE(phy_reg_init)); 2489 } ··· 3244 tp->timer.data = (unsigned long) dev; 3245 tp->timer.function = rtl8169_phy_timer; 3246 3247 rc = register_netdev(dev); 3248 if (rc < 0) 3249 goto err_out_msi_4; ··· 3297 3298 cancel_delayed_work_sync(&tp->task); 3299 3300 - rtl_release_firmware(tp); 3301 - 3302 unregister_netdev(dev); 3303 3304 if (pci_dev_run_wake(pdev)) 3305 pm_runtime_get_noresume(&pdev->dev); ··· 3310 rtl_disable_msi(pdev, tp); 3311 rtl8169_release_board(pdev, dev, tp->mmio_addr); 3312 pci_set_drvdata(pdev, NULL); 3313 } 3314 3315 static int rtl8169_open(struct net_device *dev) ··· 3374 3375 smp_mb(); 3376 3377 retval = request_irq(dev->irq, rtl8169_interrupt, 3378 (tp->features & RTL_FEATURE_MSI) ? 0 : IRQF_SHARED, 3379 dev->name, dev); 3380 if (retval < 0) 3381 - goto err_release_ring_2; 3382 3383 napi_enable(&tp->napi); 3384 ··· 3401 out: 3402 return retval; 3403 3404 - err_release_ring_2: 3405 rtl8169_rx_clear(tp); 3406 err_free_rx_1: 3407 dma_free_coherent(&pdev->dev, R8169_RX_RING_BYTES, tp->RxDescArray,
··· 170 }; 171 #undef _R 172 173 + static const struct rtl_firmware_info { 174 + int mac_version; 175 + const char *fw_name; 176 + } rtl_firmware_infos[] = { 177 + { .mac_version = RTL_GIGA_MAC_VER_25, .fw_name = FIRMWARE_8168D_1 }, 178 + { .mac_version = RTL_GIGA_MAC_VER_26, .fw_name = FIRMWARE_8168D_2 }, 179 + { .mac_version = RTL_GIGA_MAC_VER_29, .fw_name = FIRMWARE_8105E_1 }, 180 + { .mac_version = RTL_GIGA_MAC_VER_30, .fw_name = FIRMWARE_8105E_1 } 181 + }; 182 + 183 enum cfg_version { 184 RTL_CFG_0 = 0x00, 185 RTL_CFG_1, ··· 565 u32 saved_wolopts; 566 567 const struct firmware *fw; 568 + #define RTL_FIRMWARE_UNKNOWN ERR_PTR(-EAGAIN); 569 }; 570 571 MODULE_AUTHOR("Realtek and the Linux r8169 crew <netdev@vger.kernel.org>"); ··· 1789 1790 static void rtl_release_firmware(struct rtl8169_private *tp) 1791 { 1792 + if (!IS_ERR_OR_NULL(tp->fw)) 1793 + release_firmware(tp->fw); 1794 + tp->fw = RTL_FIRMWARE_UNKNOWN; 1795 } 1796 1797 + static void rtl_apply_firmware(struct rtl8169_private *tp) 1798 { 1799 + const struct firmware *fw = tp->fw; 1800 1801 /* TODO: release firmware once rtl_phy_write_fw signals failures. */ 1802 + if (!IS_ERR_OR_NULL(fw)) 1803 + rtl_phy_write_fw(tp, fw); 1804 + } 1805 + 1806 + static void rtl_apply_firmware_cond(struct rtl8169_private *tp, u8 reg, u16 val) 1807 + { 1808 + if (rtl_readphy(tp, reg) != val) 1809 + netif_warn(tp, hw, tp->dev, "chipset not ready for firmware\n"); 1810 + else 1811 + rtl_apply_firmware(tp); 1812 } 1813 1814 static void rtl8169s_hw_phy_config(struct rtl8169_private *tp) ··· 2246 2247 rtl_writephy(tp, 0x1f, 0x0005); 2248 rtl_writephy(tp, 0x05, 0x001b); 2249 + 2250 + rtl_apply_firmware_cond(tp, MII_EXPANSION, 0xbf00); 2251 2252 rtl_writephy(tp, 0x1f, 0x0000); 2253 } ··· 2351 2352 rtl_writephy(tp, 0x1f, 0x0005); 2353 rtl_writephy(tp, 0x05, 0x001b); 2354 + 2355 + rtl_apply_firmware_cond(tp, MII_EXPANSION, 0xb300); 2356 2357 rtl_writephy(tp, 0x1f, 0x0000); 2358 } ··· 2474 rtl_writephy(tp, 0x18, 0x0310); 2475 msleep(100); 2476 2477 + rtl_apply_firmware(tp); 2478 2479 rtl_writephy_batch(tp, phy_reg_init, ARRAY_SIZE(phy_reg_init)); 2480 } ··· 3237 tp->timer.data = (unsigned long) dev; 3238 tp->timer.function = rtl8169_phy_timer; 3239 3240 + tp->fw = RTL_FIRMWARE_UNKNOWN; 3241 + 3242 rc = register_netdev(dev); 3243 if (rc < 0) 3244 goto err_out_msi_4; ··· 3288 3289 cancel_delayed_work_sync(&tp->task); 3290 3291 unregister_netdev(dev); 3292 + 3293 + rtl_release_firmware(tp); 3294 3295 if (pci_dev_run_wake(pdev)) 3296 pm_runtime_get_noresume(&pdev->dev); ··· 3301 rtl_disable_msi(pdev, tp); 3302 rtl8169_release_board(pdev, dev, tp->mmio_addr); 3303 pci_set_drvdata(pdev, NULL); 3304 + } 3305 + 3306 + static void rtl_request_firmware(struct rtl8169_private *tp) 3307 + { 3308 + int i; 3309 + 3310 + /* Return early if the firmware is already loaded / cached. */ 3311 + if (!IS_ERR(tp->fw)) 3312 + goto out; 3313 + 3314 + for (i = 0; i < ARRAY_SIZE(rtl_firmware_infos); i++) { 3315 + const struct rtl_firmware_info *info = rtl_firmware_infos + i; 3316 + 3317 + if (info->mac_version == tp->mac_version) { 3318 + const char *name = info->fw_name; 3319 + int rc; 3320 + 3321 + rc = request_firmware(&tp->fw, name, &tp->pci_dev->dev); 3322 + if (rc < 0) { 3323 + netif_warn(tp, ifup, tp->dev, "unable to load " 3324 + "firmware patch %s (%d)\n", name, rc); 3325 + goto out_disable_request_firmware; 3326 + } 3327 + goto out; 3328 + } 3329 + } 3330 + 3331 + out_disable_request_firmware: 3332 + tp->fw = NULL; 3333 + out: 3334 + return; 3335 } 3336 3337 static int rtl8169_open(struct net_device *dev) ··· 3334 3335 smp_mb(); 3336 3337 + rtl_request_firmware(tp); 3338 + 3339 retval = request_irq(dev->irq, rtl8169_interrupt, 3340 (tp->features & RTL_FEATURE_MSI) ? 0 : IRQF_SHARED, 3341 dev->name, dev); 3342 if (retval < 0) 3343 + goto err_release_fw_2; 3344 3345 napi_enable(&tp->napi); 3346 ··· 3359 out: 3360 return retval; 3361 3362 + err_release_fw_2: 3363 + rtl_release_firmware(tp); 3364 rtl8169_rx_clear(tp); 3365 err_free_rx_1: 3366 dma_free_coherent(&pdev->dev, R8169_RX_RING_BYTES, tp->RxDescArray,
+6 -2
drivers/net/tg3.c
··· 12327 if (val & VCPU_CFGSHDW_ASPM_DBNC) 12328 tp->tg3_flags |= TG3_FLAG_ASPM_WORKAROUND; 12329 if ((val & VCPU_CFGSHDW_WOL_ENABLE) && 12330 - (val & VCPU_CFGSHDW_WOL_MAGPKT)) 12331 tp->tg3_flags |= TG3_FLAG_WOL_ENABLE; 12332 goto done; 12333 } 12334 ··· 12463 tp->tg3_flags &= ~TG3_FLAG_WOL_CAP; 12464 12465 if ((tp->tg3_flags & TG3_FLAG_WOL_CAP) && 12466 - (nic_cfg & NIC_SRAM_DATA_CFG_WOL_ENABLE)) 12467 tp->tg3_flags |= TG3_FLAG_WOL_ENABLE; 12468 12469 if (cfg2 & (1 << 17)) 12470 tp->phy_flags |= TG3_PHYFLG_CAPACITIVE_COUPLING;
··· 12327 if (val & VCPU_CFGSHDW_ASPM_DBNC) 12328 tp->tg3_flags |= TG3_FLAG_ASPM_WORKAROUND; 12329 if ((val & VCPU_CFGSHDW_WOL_ENABLE) && 12330 + (val & VCPU_CFGSHDW_WOL_MAGPKT)) { 12331 tp->tg3_flags |= TG3_FLAG_WOL_ENABLE; 12332 + device_set_wakeup_enable(&tp->pdev->dev, true); 12333 + } 12334 goto done; 12335 } 12336 ··· 12461 tp->tg3_flags &= ~TG3_FLAG_WOL_CAP; 12462 12463 if ((tp->tg3_flags & TG3_FLAG_WOL_CAP) && 12464 + (nic_cfg & NIC_SRAM_DATA_CFG_WOL_ENABLE)) { 12465 tp->tg3_flags |= TG3_FLAG_WOL_ENABLE; 12466 + device_set_wakeup_enable(&tp->pdev->dev, true); 12467 + } 12468 12469 if (cfg2 & (1 << 17)) 12470 tp->phy_flags |= TG3_PHYFLG_CAPACITIVE_COUPLING;
+12 -2
drivers/net/usb/cdc_ether.c
··· 460 .manage_power = cdc_manage_power, 461 }; 462 463 - static const struct driver_info mbm_info = { 464 .description = "Mobile Broadband Network Device", 465 .flags = FLAG_WWAN, 466 .bind = usbnet_cdc_bind, ··· 471 472 /*-------------------------------------------------------------------------*/ 473 474 475 static const struct usb_device_id products [] = { 476 /* ··· 588 }, { 589 USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MDLM, 590 USB_CDC_PROTO_NONE), 591 - .driver_info = (unsigned long)&mbm_info, 592 593 }, 594 { }, // END 595 };
··· 460 .manage_power = cdc_manage_power, 461 }; 462 463 + static const struct driver_info wwan_info = { 464 .description = "Mobile Broadband Network Device", 465 .flags = FLAG_WWAN, 466 .bind = usbnet_cdc_bind, ··· 471 472 /*-------------------------------------------------------------------------*/ 473 474 + #define HUAWEI_VENDOR_ID 0x12D1 475 476 static const struct usb_device_id products [] = { 477 /* ··· 587 }, { 588 USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MDLM, 589 USB_CDC_PROTO_NONE), 590 + .driver_info = (unsigned long)&wwan_info, 591 592 + }, { 593 + /* Various Huawei modems with a network port like the UMG1831 */ 594 + .match_flags = USB_DEVICE_ID_MATCH_VENDOR 595 + | USB_DEVICE_ID_MATCH_INT_INFO, 596 + .idVendor = HUAWEI_VENDOR_ID, 597 + .bInterfaceClass = USB_CLASS_COMM, 598 + .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, 599 + .bInterfaceProtocol = 255, 600 + .driver_info = (unsigned long)&wwan_info, 601 }, 602 { }, // END 603 };
+2 -2
drivers/net/usb/cdc_ncm.c
··· 54 #include <linux/usb/usbnet.h> 55 #include <linux/usb/cdc.h> 56 57 - #define DRIVER_VERSION "7-Feb-2011" 58 59 /* CDC NCM subclass 3.2.1 */ 60 #define USB_CDC_NCM_NDP16_LENGTH_MIN 0x10 61 62 /* Maximum NTB length */ 63 - #define CDC_NCM_NTB_MAX_SIZE_TX 16384 /* bytes */ 64 #define CDC_NCM_NTB_MAX_SIZE_RX 16384 /* bytes */ 65 66 /* Minimum value for MaxDatagramSize, ch. 6.2.9 */
··· 54 #include <linux/usb/usbnet.h> 55 #include <linux/usb/cdc.h> 56 57 + #define DRIVER_VERSION "23-Apr-2011" 58 59 /* CDC NCM subclass 3.2.1 */ 60 #define USB_CDC_NCM_NDP16_LENGTH_MIN 0x10 61 62 /* Maximum NTB length */ 63 + #define CDC_NCM_NTB_MAX_SIZE_TX (16384 + 4) /* bytes, must be short terminated */ 64 #define CDC_NCM_NTB_MAX_SIZE_RX 16384 /* bytes */ 65 66 /* Minimum value for MaxDatagramSize, ch. 6.2.9 */
+1 -1
drivers/net/usb/smsc95xx.c
··· 730 msleep(10); 731 bmcr = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR); 732 timeout++; 733 - } while ((bmcr & MII_BMCR) && (timeout < 100)); 734 735 if (timeout >= 100) { 736 netdev_warn(dev->net, "timeout on PHY Reset");
··· 730 msleep(10); 731 bmcr = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR); 732 timeout++; 733 + } while ((bmcr & BMCR_RESET) && (timeout < 100)); 734 735 if (timeout >= 100) { 736 netdev_warn(dev->net, "timeout on PHY Reset");
+8
drivers/net/usb/usbnet.c
··· 736 } 737 } 738 739 netif_start_queue (net); 740 netif_info(dev, ifup, dev->net, 741 "open: enable queueing (rx %d, tx %d) mtu %d %s framing\n", ··· 1260 if (dev->driver_info->unbind) 1261 dev->driver_info->unbind (dev, intf); 1262 1263 free_netdev(net); 1264 usb_put_dev (xdev); 1265 } ··· 1502 int retval; 1503 1504 if (!--dev->suspend_count) { 1505 spin_lock_irq(&dev->txq.lock); 1506 while ((res = usb_get_from_anchor(&dev->deferred))) { 1507
··· 736 } 737 } 738 739 + set_bit(EVENT_DEV_OPEN, &dev->flags); 740 netif_start_queue (net); 741 netif_info(dev, ifup, dev->net, 742 "open: enable queueing (rx %d, tx %d) mtu %d %s framing\n", ··· 1259 if (dev->driver_info->unbind) 1260 dev->driver_info->unbind (dev, intf); 1261 1262 + usb_kill_urb(dev->interrupt); 1263 + usb_free_urb(dev->interrupt); 1264 + 1265 free_netdev(net); 1266 usb_put_dev (xdev); 1267 } ··· 1498 int retval; 1499 1500 if (!--dev->suspend_count) { 1501 + /* resume interrupt URBs */ 1502 + if (dev->interrupt && test_bit(EVENT_DEV_OPEN, &dev->flags)) 1503 + usb_submit_urb(dev->interrupt, GFP_NOIO); 1504 + 1505 spin_lock_irq(&dev->txq.lock); 1506 while ((res = usb_get_from_anchor(&dev->deferred))) { 1507
+12
drivers/net/veth.c
··· 403 if (tb[IFLA_ADDRESS] == NULL) 404 random_ether_addr(dev->dev_addr); 405 406 err = register_netdevice(dev); 407 if (err < 0) 408 goto err_register_dev; ··· 433 434 err_register_dev: 435 /* nothing to do */ 436 err_configure_peer: 437 unregister_netdevice(peer); 438 return err;
··· 403 if (tb[IFLA_ADDRESS] == NULL) 404 random_ether_addr(dev->dev_addr); 405 406 + if (tb[IFLA_IFNAME]) 407 + nla_strlcpy(dev->name, tb[IFLA_IFNAME], IFNAMSIZ); 408 + else 409 + snprintf(dev->name, IFNAMSIZ, DRV_NAME "%%d"); 410 + 411 + if (strchr(dev->name, '%')) { 412 + err = dev_alloc_name(dev, dev->name); 413 + if (err < 0) 414 + goto err_alloc_name; 415 + } 416 + 417 err = register_netdevice(dev); 418 if (err < 0) 419 goto err_register_dev; ··· 422 423 err_register_dev: 424 /* nothing to do */ 425 + err_alloc_name: 426 err_configure_peer: 427 unregister_netdevice(peer); 428 return err;
+1 -1
drivers/net/wireless/ath/ath9k/recv.c
··· 506 "confusing the DMA engine when we start RX up\n"); 507 ATH_DBG_WARN_ON_ONCE(!stopped); 508 } 509 - return stopped || reset; 510 } 511 512 void ath_flushrecv(struct ath_softc *sc)
··· 506 "confusing the DMA engine when we start RX up\n"); 507 ATH_DBG_WARN_ON_ONCE(!stopped); 508 } 509 + return stopped && !reset; 510 } 511 512 void ath_flushrecv(struct ath_softc *sc)
+1
drivers/net/wireless/b43/main.c
··· 72 MODULE_FIRMWARE("b43/ucode13.fw"); 73 MODULE_FIRMWARE("b43/ucode14.fw"); 74 MODULE_FIRMWARE("b43/ucode15.fw"); 75 MODULE_FIRMWARE("b43/ucode5.fw"); 76 MODULE_FIRMWARE("b43/ucode9.fw"); 77
··· 72 MODULE_FIRMWARE("b43/ucode13.fw"); 73 MODULE_FIRMWARE("b43/ucode14.fw"); 74 MODULE_FIRMWARE("b43/ucode15.fw"); 75 + MODULE_FIRMWARE("b43/ucode16_mimo.fw"); 76 MODULE_FIRMWARE("b43/ucode5.fw"); 77 MODULE_FIRMWARE("b43/ucode9.fw"); 78
+19 -9
drivers/net/wireless/iwlegacy/iwl-4965-tx.c
··· 316 317 hdr_len = ieee80211_hdrlen(fc); 318 319 - /* Find index into station table for destination station */ 320 - sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta); 321 - if (sta_id == IWL_INVALID_STATION) { 322 - IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", 323 - hdr->addr1); 324 - goto drop_unlock; 325 } 326 327 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); ··· 1133 q->read_ptr = iwl_legacy_queue_inc_wrap(q->read_ptr, q->n_bd)) { 1134 1135 tx_info = &txq->txb[txq->q.read_ptr]; 1136 - iwl4965_tx_status(priv, tx_info, 1137 - txq_id >= IWL4965_FIRST_AMPDU_QUEUE); 1138 1139 hdr = (struct ieee80211_hdr *)tx_info->skb->data; 1140 - if (hdr && ieee80211_is_data_qos(hdr->frame_control)) 1141 nfreed++; 1142 tx_info->skb = NULL; 1143 1144 priv->cfg->ops->lib->txq_free_tfd(priv, txq);
··· 316 317 hdr_len = ieee80211_hdrlen(fc); 318 319 + /* For management frames use broadcast id to do not break aggregation */ 320 + if (!ieee80211_is_data(fc)) 321 + sta_id = ctx->bcast_sta_id; 322 + else { 323 + /* Find index into station table for destination station */ 324 + sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta); 325 + 326 + if (sta_id == IWL_INVALID_STATION) { 327 + IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", 328 + hdr->addr1); 329 + goto drop_unlock; 330 + } 331 } 332 333 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); ··· 1127 q->read_ptr = iwl_legacy_queue_inc_wrap(q->read_ptr, q->n_bd)) { 1128 1129 tx_info = &txq->txb[txq->q.read_ptr]; 1130 + 1131 + if (WARN_ON_ONCE(tx_info->skb == NULL)) 1132 + continue; 1133 1134 hdr = (struct ieee80211_hdr *)tx_info->skb->data; 1135 + if (ieee80211_is_data_qos(hdr->frame_control)) 1136 nfreed++; 1137 + 1138 + iwl4965_tx_status(priv, tx_info, 1139 + txq_id >= IWL4965_FIRST_AMPDU_QUEUE); 1140 tx_info->skb = NULL; 1141 1142 priv->cfg->ops->lib->txq_free_tfd(priv, txq);
+19 -1
drivers/net/wireless/iwlegacy/iwl-led.c
··· 48 MODULE_PARM_DESC(led_mode, "0=system default, " 49 "1=On(RF On)/Off(RF Off), 2=blinking"); 50 51 static const struct ieee80211_tpt_blink iwl_blink[] = { 52 - { .throughput = 0 * 1024 - 1, .blink_time = 334 }, 53 { .throughput = 1 * 1024 - 1, .blink_time = 260 }, 54 { .throughput = 5 * 1024 - 1, .blink_time = 220 }, 55 { .throughput = 10 * 1024 - 1, .blink_time = 190 }, ··· 113 114 if (priv->blink_on == on && priv->blink_off == off) 115 return 0; 116 117 IWL_DEBUG_LED(priv, "Led blink time compensation=%u\n", 118 priv->cfg->base_params->led_compensation);
··· 48 MODULE_PARM_DESC(led_mode, "0=system default, " 49 "1=On(RF On)/Off(RF Off), 2=blinking"); 50 51 + /* Throughput OFF time(ms) ON time (ms) 52 + * >300 25 25 53 + * >200 to 300 40 40 54 + * >100 to 200 55 55 55 + * >70 to 100 65 65 56 + * >50 to 70 75 75 57 + * >20 to 50 85 85 58 + * >10 to 20 95 95 59 + * >5 to 10 110 110 60 + * >1 to 5 130 130 61 + * >0 to 1 167 167 62 + * <=0 SOLID ON 63 + */ 64 static const struct ieee80211_tpt_blink iwl_blink[] = { 65 + { .throughput = 0, .blink_time = 334 }, 66 { .throughput = 1 * 1024 - 1, .blink_time = 260 }, 67 { .throughput = 5 * 1024 - 1, .blink_time = 220 }, 68 { .throughput = 10 * 1024 - 1, .blink_time = 190 }, ··· 100 101 if (priv->blink_on == on && priv->blink_off == off) 102 return 0; 103 + 104 + if (off == 0) { 105 + /* led is SOLID_ON */ 106 + on = IWL_LED_SOLID; 107 + } 108 109 IWL_DEBUG_LED(priv, "Led blink time compensation=%u\n", 110 priv->cfg->base_params->led_compensation);
+4 -4
drivers/net/wireless/iwlegacy/iwl4965-base.c
··· 2984 struct iwl_priv *priv = container_of(work, struct iwl_priv, 2985 txpower_work); 2986 2987 /* If a scan happened to start before we got here 2988 * then just return; the statistics notification will 2989 * kick off another scheduled work to compensate for 2990 * any temperature delta we missed here. */ 2991 if (test_bit(STATUS_EXIT_PENDING, &priv->status) || 2992 test_bit(STATUS_SCANNING, &priv->status)) 2993 - return; 2994 - 2995 - mutex_lock(&priv->mutex); 2996 2997 /* Regardless of if we are associated, we must reconfigure the 2998 * TX power since frames can be sent on non-radar channels while ··· 3002 /* Update last_temperature to keep is_calib_needed from running 3003 * when it isn't needed... */ 3004 priv->last_temperature = priv->temperature; 3005 - 3006 mutex_unlock(&priv->mutex); 3007 } 3008
··· 2984 struct iwl_priv *priv = container_of(work, struct iwl_priv, 2985 txpower_work); 2986 2987 + mutex_lock(&priv->mutex); 2988 + 2989 /* If a scan happened to start before we got here 2990 * then just return; the statistics notification will 2991 * kick off another scheduled work to compensate for 2992 * any temperature delta we missed here. */ 2993 if (test_bit(STATUS_EXIT_PENDING, &priv->status) || 2994 test_bit(STATUS_SCANNING, &priv->status)) 2995 + goto out; 2996 2997 /* Regardless of if we are associated, we must reconfigure the 2998 * TX power since frames can be sent on non-radar channels while ··· 3002 /* Update last_temperature to keep is_calib_needed from running 3003 * when it isn't needed... */ 3004 priv->last_temperature = priv->temperature; 3005 + out: 3006 mutex_unlock(&priv->mutex); 3007 } 3008
+1 -6
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
··· 335 struct ieee80211_channel *channel = conf->channel; 336 const struct iwl_channel_info *ch_info; 337 int ret = 0; 338 - bool ht_changed[NUM_IWL_RXON_CTX] = {}; 339 340 IWL_DEBUG_MAC80211(priv, "changed %#x", changed); 341 ··· 382 383 for_each_context(priv, ctx) { 384 /* Configure HT40 channels */ 385 - if (ctx->ht.enabled != conf_is_ht(conf)) { 386 ctx->ht.enabled = conf_is_ht(conf); 387 - ht_changed[ctx->ctxid] = true; 388 - } 389 390 if (ctx->ht.enabled) { 391 if (conf_is_ht40_minus(conf)) { ··· 452 if (!memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) 453 continue; 454 iwlagn_commit_rxon(priv, ctx); 455 - if (ht_changed[ctx->ctxid]) 456 - iwlagn_update_qos(priv, ctx); 457 } 458 out: 459 mutex_unlock(&priv->mutex);
··· 335 struct ieee80211_channel *channel = conf->channel; 336 const struct iwl_channel_info *ch_info; 337 int ret = 0; 338 339 IWL_DEBUG_MAC80211(priv, "changed %#x", changed); 340 ··· 383 384 for_each_context(priv, ctx) { 385 /* Configure HT40 channels */ 386 + if (ctx->ht.enabled != conf_is_ht(conf)) 387 ctx->ht.enabled = conf_is_ht(conf); 388 389 if (ctx->ht.enabled) { 390 if (conf_is_ht40_minus(conf)) { ··· 455 if (!memcmp(&ctx->staging, &ctx->active, sizeof(ctx->staging))) 456 continue; 457 iwlagn_commit_rxon(priv, ctx); 458 } 459 out: 460 mutex_unlock(&priv->mutex);
+18 -9
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
··· 568 569 hdr_len = ieee80211_hdrlen(fc); 570 571 - /* Find index into station table for destination station */ 572 - sta_id = iwl_sta_id_or_broadcast(priv, ctx, info->control.sta); 573 - if (sta_id == IWL_INVALID_STATION) { 574 - IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", 575 - hdr->addr1); 576 - goto drop_unlock; 577 } 578 579 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); ··· 1229 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd)) { 1230 1231 tx_info = &txq->txb[txq->q.read_ptr]; 1232 - iwlagn_tx_status(priv, tx_info, 1233 - txq_id >= IWLAGN_FIRST_AMPDU_QUEUE); 1234 1235 hdr = (struct ieee80211_hdr *)tx_info->skb->data; 1236 - if (hdr && ieee80211_is_data_qos(hdr->frame_control)) 1237 nfreed++; 1238 tx_info->skb = NULL; 1239 1240 if (priv->cfg->ops->lib->txq_inval_byte_cnt_tbl)
··· 568 569 hdr_len = ieee80211_hdrlen(fc); 570 571 + /* For management frames use broadcast id to do not break aggregation */ 572 + if (!ieee80211_is_data(fc)) 573 + sta_id = ctx->bcast_sta_id; 574 + else { 575 + /* Find index into station table for destination station */ 576 + sta_id = iwl_sta_id_or_broadcast(priv, ctx, info->control.sta); 577 + if (sta_id == IWL_INVALID_STATION) { 578 + IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", 579 + hdr->addr1); 580 + goto drop_unlock; 581 + } 582 } 583 584 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); ··· 1224 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd)) { 1225 1226 tx_info = &txq->txb[txq->q.read_ptr]; 1227 + 1228 + if (WARN_ON_ONCE(tx_info->skb == NULL)) 1229 + continue; 1230 1231 hdr = (struct ieee80211_hdr *)tx_info->skb->data; 1232 + if (ieee80211_is_data_qos(hdr->frame_control)) 1233 nfreed++; 1234 + 1235 + iwlagn_tx_status(priv, tx_info, 1236 + txq_id >= IWLAGN_FIRST_AMPDU_QUEUE); 1237 tx_info->skb = NULL; 1238 1239 if (priv->cfg->ops->lib->txq_inval_byte_cnt_tbl)
+1
include/linux/usb/usbnet.h
··· 68 # define EVENT_RX_PAUSED 5 69 # define EVENT_DEV_WAKING 6 70 # define EVENT_DEV_ASLEEP 7 71 }; 72 73 static inline struct usb_driver *driver_of(struct usb_interface *intf)
··· 68 # define EVENT_RX_PAUSED 5 69 # define EVENT_DEV_WAKING 6 70 # define EVENT_DEV_ASLEEP 7 71 + # define EVENT_DEV_OPEN 8 72 }; 73 74 static inline struct usb_driver *driver_of(struct usb_interface *intf)
+2 -3
net/bluetooth/hci_core.c
··· 587 hci_req_cancel(hdev, ENODEV); 588 hci_req_lock(hdev); 589 590 - /* Stop timer, it might be running */ 591 - del_timer_sync(&hdev->cmd_timer); 592 - 593 if (!test_and_clear_bit(HCI_UP, &hdev->flags)) { 594 hci_req_unlock(hdev); 595 return 0; 596 } ··· 627 628 /* Drop last sent command */ 629 if (hdev->sent_cmd) { 630 kfree_skb(hdev->sent_cmd); 631 hdev->sent_cmd = NULL; 632 }
··· 587 hci_req_cancel(hdev, ENODEV); 588 hci_req_lock(hdev); 589 590 if (!test_and_clear_bit(HCI_UP, &hdev->flags)) { 591 + del_timer_sync(&hdev->cmd_timer); 592 hci_req_unlock(hdev); 593 return 0; 594 } ··· 629 630 /* Drop last sent command */ 631 if (hdev->sent_cmd) { 632 + del_timer_sync(&hdev->cmd_timer); 633 kfree_skb(hdev->sent_cmd); 634 hdev->sent_cmd = NULL; 635 }
-2
net/bluetooth/hci_event.c
··· 2387 if (!conn) 2388 goto unlock; 2389 2390 - hci_conn_hold(conn); 2391 - 2392 conn->remote_cap = ev->capability; 2393 conn->remote_oob = ev->oob_data; 2394 conn->remote_auth = ev->authentication;
··· 2387 if (!conn) 2388 goto unlock; 2389 2390 conn->remote_cap = ev->capability; 2391 conn->remote_oob = ev->oob_data; 2392 conn->remote_auth = ev->authentication;
+1
net/bluetooth/l2cap_core.c
··· 1051 tx_skb = skb_clone(skb, GFP_ATOMIC); 1052 bt_cb(skb)->retries++; 1053 control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); 1054 1055 if (pi->conn_state & L2CAP_CONN_SEND_FBIT) { 1056 control |= L2CAP_CTRL_FINAL;
··· 1051 tx_skb = skb_clone(skb, GFP_ATOMIC); 1052 bt_cb(skb)->retries++; 1053 control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); 1054 + control &= L2CAP_CTRL_SAR; 1055 1056 if (pi->conn_state & L2CAP_CONN_SEND_FBIT) { 1057 control |= L2CAP_CTRL_FINAL;
+9
net/bluetooth/sco.c
··· 369 370 case BT_CONNECTED: 371 case BT_CONFIG: 372 case BT_CONNECT: 373 case BT_DISCONN: 374 sco_chan_del(sk, ECONNRESET);
··· 369 370 case BT_CONNECTED: 371 case BT_CONFIG: 372 + if (sco_pi(sk)->conn) { 373 + sk->sk_state = BT_DISCONN; 374 + sco_sock_set_timer(sk, SCO_DISCONN_TIMEOUT); 375 + hci_conn_put(sco_pi(sk)->conn->hcon); 376 + sco_pi(sk)->conn = NULL; 377 + } else 378 + sco_chan_del(sk, ECONNRESET); 379 + break; 380 + 381 case BT_CONNECT: 382 case BT_DISCONN: 383 sco_chan_del(sk, ECONNRESET);
+1 -1
net/bridge/br_input.c
··· 164 goto drop; 165 166 /* If STP is turned off, then forward */ 167 - if (p->br->stp_enabled == BR_NO_STP) 168 goto forward; 169 170 if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
··· 164 goto drop; 165 166 /* If STP is turned off, then forward */ 167 + if (p->br->stp_enabled == BR_NO_STP && dest[5] == 0) 168 goto forward; 169 170 if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
+6 -1
net/can/bcm.c
··· 1427 static int bcm_release(struct socket *sock) 1428 { 1429 struct sock *sk = sock->sk; 1430 - struct bcm_sock *bo = bcm_sk(sk); 1431 struct bcm_op *op, *next; 1432 1433 /* remove bcm_ops, timer, rx_unregister(), etc. */ 1434
··· 1427 static int bcm_release(struct socket *sock) 1428 { 1429 struct sock *sk = sock->sk; 1430 + struct bcm_sock *bo; 1431 struct bcm_op *op, *next; 1432 + 1433 + if (sk == NULL) 1434 + return 0; 1435 + 1436 + bo = bcm_sk(sk); 1437 1438 /* remove bcm_ops, timer, rx_unregister(), etc. */ 1439
+6 -1
net/can/raw.c
··· 305 static int raw_release(struct socket *sock) 306 { 307 struct sock *sk = sock->sk; 308 - struct raw_sock *ro = raw_sk(sk); 309 310 unregister_netdevice_notifier(&ro->notifier); 311
··· 305 static int raw_release(struct socket *sock) 306 { 307 struct sock *sk = sock->sk; 308 + struct raw_sock *ro; 309 + 310 + if (!sk) 311 + return 0; 312 + 313 + ro = raw_sk(sk); 314 315 unregister_netdevice_notifier(&ro->notifier); 316
+3 -3
net/core/dev.c
··· 4773 * is never reached 4774 */ 4775 WARN_ON(1); 4776 - err = -EINVAL; 4777 break; 4778 4779 } ··· 5041 /* Set the per device memory buffer space. 5042 * Not applicable in our case */ 5043 case SIOCSIFLINK: 5044 - return -EINVAL; 5045 5046 /* 5047 * Unknown or private ioctl. ··· 5062 /* Take care of Wireless Extensions */ 5063 if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) 5064 return wext_handle_ioctl(net, &ifr, cmd, arg); 5065 - return -EINVAL; 5066 } 5067 } 5068
··· 4773 * is never reached 4774 */ 4775 WARN_ON(1); 4776 + err = -ENOTTY; 4777 break; 4778 4779 } ··· 5041 /* Set the per device memory buffer space. 5042 * Not applicable in our case */ 5043 case SIOCSIFLINK: 5044 + return -ENOTTY; 5045 5046 /* 5047 * Unknown or private ioctl. ··· 5062 /* Take care of Wireless Extensions */ 5063 if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) 5064 return wext_handle_ioctl(net, &ifr, cmd, arg); 5065 + return -ENOTTY; 5066 } 5067 } 5068
+2 -2
net/dsa/Kconfig
··· 41 default n 42 43 config NET_DSA_MV88E6131 44 - bool "Marvell 88E6095/6095F/6131 ethernet switch chip support" 45 select NET_DSA_MV88E6XXX 46 select NET_DSA_MV88E6XXX_NEED_PPU 47 select NET_DSA_TAG_DSA 48 ---help--- 49 - This enables support for the Marvell 88E6095/6095F/6131 50 ethernet switch chips. 51 52 config NET_DSA_MV88E6123_61_65
··· 41 default n 42 43 config NET_DSA_MV88E6131 44 + bool "Marvell 88E6085/6095/6095F/6131 ethernet switch chip support" 45 select NET_DSA_MV88E6XXX 46 select NET_DSA_MV88E6XXX_NEED_PPU 47 select NET_DSA_TAG_DSA 48 ---help--- 49 + This enables support for the Marvell 88E6085/6095/6095F/6131 50 ethernet switch chips. 51 52 config NET_DSA_MV88E6123_61_65
+21 -5
net/dsa/mv88e6131.c
··· 207 * mode, but do not enable forwarding of unknown unicasts. 208 */ 209 val = 0x0433; 210 - if (p == dsa_upstream_port(ds)) 211 val |= 0x0104; 212 if (ds->dsa_port_mask & (1 << p)) 213 val |= 0x0100; 214 REG_WRITE(addr, 0x04, val); ··· 258 * If this is the upstream port for this switch, enable 259 * forwarding of unknown multicast addresses. 260 */ 261 - val = 0x0080 | dsa_upstream_port(ds); 262 - if (p == dsa_upstream_port(ds)) 263 - val |= 0x0040; 264 - REG_WRITE(addr, 0x08, val); 265 266 /* 267 * Rate Control: disable ingress rate limiting.
··· 207 * mode, but do not enable forwarding of unknown unicasts. 208 */ 209 val = 0x0433; 210 + if (p == dsa_upstream_port(ds)) { 211 val |= 0x0104; 212 + /* 213 + * On 6085, unknown multicast forward is controlled 214 + * here rather than in Port Control 2 register. 215 + */ 216 + if (ps->id == ID_6085) 217 + val |= 0x0008; 218 + } 219 if (ds->dsa_port_mask & (1 << p)) 220 val |= 0x0100; 221 REG_WRITE(addr, 0x04, val); ··· 251 * If this is the upstream port for this switch, enable 252 * forwarding of unknown multicast addresses. 253 */ 254 + if (ps->id == ID_6085) 255 + /* 256 + * on 6085, bits 3:0 are reserved, bit 6 control ARP 257 + * mirroring, and multicast forward is handled in 258 + * Port Control register. 259 + */ 260 + REG_WRITE(addr, 0x08, 0x0080); 261 + else { 262 + val = 0x0080 | dsa_upstream_port(ds); 263 + if (p == dsa_upstream_port(ds)) 264 + val |= 0x0040; 265 + REG_WRITE(addr, 0x08, val); 266 + } 267 268 /* 269 * Rate Control: disable ingress rate limiting.
+1 -1
net/ipv4/devinet.c
··· 1680 return; 1681 1682 cnf->sysctl = NULL; 1683 - unregister_sysctl_table(t->sysctl_header); 1684 kfree(t->dev_name); 1685 kfree(t); 1686 }
··· 1680 return; 1681 1682 cnf->sysctl = NULL; 1683 + unregister_net_sysctl_table(t->sysctl_header); 1684 kfree(t->dev_name); 1685 kfree(t); 1686 }
-3
net/ipv4/fib_trie.c
··· 1978 t = (struct trie *) tb->tb_data; 1979 memset(t, 0, sizeof(*t)); 1980 1981 - if (id == RT_TABLE_LOCAL) 1982 - pr_info("IPv4 FIB: Using LC-trie version %s\n", VERSION); 1983 - 1984 return tb; 1985 } 1986
··· 1978 t = (struct trie *) tb->tb_data; 1979 memset(t, 0, sizeof(*t)); 1980 1981 return tb; 1982 } 1983
+7
net/ipv4/route.c
··· 2690 { 2691 } 2692 2693 static struct dst_ops ipv4_dst_blackhole_ops = { 2694 .family = AF_INET, 2695 .protocol = cpu_to_be16(ETH_P_IP), ··· 2704 .default_mtu = ipv4_blackhole_default_mtu, 2705 .default_advmss = ipv4_default_advmss, 2706 .update_pmtu = ipv4_rt_blackhole_update_pmtu, 2707 }; 2708 2709 struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig)
··· 2690 { 2691 } 2692 2693 + static u32 *ipv4_rt_blackhole_cow_metrics(struct dst_entry *dst, 2694 + unsigned long old) 2695 + { 2696 + return NULL; 2697 + } 2698 + 2699 static struct dst_ops ipv4_dst_blackhole_ops = { 2700 .family = AF_INET, 2701 .protocol = cpu_to_be16(ETH_P_IP), ··· 2698 .default_mtu = ipv4_blackhole_default_mtu, 2699 .default_advmss = ipv4_default_advmss, 2700 .update_pmtu = ipv4_rt_blackhole_update_pmtu, 2701 + .cow_metrics = ipv4_rt_blackhole_cow_metrics, 2702 }; 2703 2704 struct dst_entry *ipv4_blackhole_route(struct net *net, struct dst_entry *dst_orig)
+1 -1
net/ipv6/addrconf.c
··· 4537 4538 t = p->sysctl; 4539 p->sysctl = NULL; 4540 - unregister_sysctl_table(t->sysctl_header); 4541 kfree(t->dev_name); 4542 kfree(t); 4543 }
··· 4537 4538 t = p->sysctl; 4539 p->sysctl = NULL; 4540 + unregister_net_sysctl_table(t->sysctl_header); 4541 kfree(t->dev_name); 4542 kfree(t); 4543 }
+1 -1
net/ipv6/esp6.c
··· 371 iv = esp_tmp_iv(aead, tmp, seqhilen); 372 req = esp_tmp_req(aead, iv); 373 asg = esp_req_sg(aead, req); 374 - sg = asg + 1; 375 376 skb->ip_summed = CHECKSUM_NONE; 377
··· 371 iv = esp_tmp_iv(aead, tmp, seqhilen); 372 req = esp_tmp_req(aead, iv); 373 asg = esp_req_sg(aead, req); 374 + sg = asg + sglists; 375 376 skb->ip_summed = CHECKSUM_NONE; 377
+7 -1
net/ipv6/route.c
··· 153 { 154 } 155 156 static struct dst_ops ip6_dst_blackhole_ops = { 157 .family = AF_INET6, 158 .protocol = cpu_to_be16(ETH_P_IPV6), ··· 167 .default_mtu = ip6_blackhole_default_mtu, 168 .default_advmss = ip6_default_advmss, 169 .update_pmtu = ip6_rt_blackhole_update_pmtu, 170 }; 171 172 static const u32 ip6_template_metrics[RTAX_MAX] = { ··· 2019 rt->dst.output = ip6_output; 2020 rt->rt6i_dev = net->loopback_dev; 2021 rt->rt6i_idev = idev; 2022 - dst_metric_set(&rt->dst, RTAX_HOPLIMIT, -1); 2023 rt->dst.obsolete = -1; 2024 2025 rt->rt6i_flags = RTF_UP | RTF_NONEXTHOP;
··· 153 { 154 } 155 156 + static u32 *ip6_rt_blackhole_cow_metrics(struct dst_entry *dst, 157 + unsigned long old) 158 + { 159 + return NULL; 160 + } 161 + 162 static struct dst_ops ip6_dst_blackhole_ops = { 163 .family = AF_INET6, 164 .protocol = cpu_to_be16(ETH_P_IPV6), ··· 161 .default_mtu = ip6_blackhole_default_mtu, 162 .default_advmss = ip6_default_advmss, 163 .update_pmtu = ip6_rt_blackhole_update_pmtu, 164 + .cow_metrics = ip6_rt_blackhole_cow_metrics, 165 }; 166 167 static const u32 ip6_template_metrics[RTAX_MAX] = { ··· 2012 rt->dst.output = ip6_output; 2013 rt->rt6i_dev = net->loopback_dev; 2014 rt->rt6i_idev = idev; 2015 rt->dst.obsolete = -1; 2016 2017 rt->rt6i_flags = RTF_UP | RTF_NONEXTHOP;
+1 -1
net/ipv6/udp.c
··· 1335 skb->ip_summed = CHECKSUM_NONE; 1336 1337 /* Check if there is enough headroom to insert fragment header. */ 1338 - if ((skb_headroom(skb) < frag_hdr_sz) && 1339 pskb_expand_head(skb, frag_hdr_sz, 0, GFP_ATOMIC)) 1340 goto out; 1341
··· 1335 skb->ip_summed = CHECKSUM_NONE; 1336 1337 /* Check if there is enough headroom to insert fragment header. */ 1338 + if ((skb_mac_header(skb) < skb->head + frag_hdr_sz) && 1339 pskb_expand_head(skb, frag_hdr_sz, 0, GFP_ATOMIC)) 1340 goto out; 1341
+2
net/mac80211/cfg.c
··· 1504 enum ieee80211_smps_mode old_req; 1505 int err; 1506 1507 old_req = sdata->u.mgd.req_smps; 1508 sdata->u.mgd.req_smps = smps_mode; 1509
··· 1504 enum ieee80211_smps_mode old_req; 1505 int err; 1506 1507 + lockdep_assert_held(&sdata->u.mgd.mtx); 1508 + 1509 old_req = sdata->u.mgd.req_smps; 1510 sdata->u.mgd.req_smps = smps_mode; 1511
+2 -2
net/mac80211/debugfs_netdev.c
··· 177 if (sdata->vif.type != NL80211_IFTYPE_STATION) 178 return -EOPNOTSUPP; 179 180 - mutex_lock(&local->iflist_mtx); 181 err = __ieee80211_request_smps(sdata, smps_mode); 182 - mutex_unlock(&local->iflist_mtx); 183 184 return err; 185 }
··· 177 if (sdata->vif.type != NL80211_IFTYPE_STATION) 178 return -EOPNOTSUPP; 179 180 + mutex_lock(&sdata->u.mgd.mtx); 181 err = __ieee80211_request_smps(sdata, smps_mode); 182 + mutex_unlock(&sdata->u.mgd.mtx); 183 184 return err; 185 }
+15 -1
net/unix/af_unix.c
··· 524 int, int); 525 static int unix_seqpacket_sendmsg(struct kiocb *, struct socket *, 526 struct msghdr *, size_t); 527 528 static const struct proto_ops unix_stream_ops = { 529 .family = PF_UNIX, ··· 585 .setsockopt = sock_no_setsockopt, 586 .getsockopt = sock_no_getsockopt, 587 .sendmsg = unix_seqpacket_sendmsg, 588 - .recvmsg = unix_dgram_recvmsg, 589 .mmap = sock_no_mmap, 590 .sendpage = sock_no_sendpage, 591 }; ··· 1699 msg->msg_namelen = 0; 1700 1701 return unix_dgram_sendmsg(kiocb, sock, msg, len); 1702 } 1703 1704 static void unix_copy_addr(struct msghdr *msg, struct sock *sk)
··· 524 int, int); 525 static int unix_seqpacket_sendmsg(struct kiocb *, struct socket *, 526 struct msghdr *, size_t); 527 + static int unix_seqpacket_recvmsg(struct kiocb *, struct socket *, 528 + struct msghdr *, size_t, int); 529 530 static const struct proto_ops unix_stream_ops = { 531 .family = PF_UNIX, ··· 583 .setsockopt = sock_no_setsockopt, 584 .getsockopt = sock_no_getsockopt, 585 .sendmsg = unix_seqpacket_sendmsg, 586 + .recvmsg = unix_seqpacket_recvmsg, 587 .mmap = sock_no_mmap, 588 .sendpage = sock_no_sendpage, 589 }; ··· 1697 msg->msg_namelen = 0; 1698 1699 return unix_dgram_sendmsg(kiocb, sock, msg, len); 1700 + } 1701 + 1702 + static int unix_seqpacket_recvmsg(struct kiocb *iocb, struct socket *sock, 1703 + struct msghdr *msg, size_t size, 1704 + int flags) 1705 + { 1706 + struct sock *sk = sock->sk; 1707 + 1708 + if (sk->sk_state != TCP_ESTABLISHED) 1709 + return -ENOTCONN; 1710 + 1711 + return unix_dgram_recvmsg(iocb, sock, msg, size, flags); 1712 } 1713 1714 static void unix_copy_addr(struct msghdr *msg, struct sock *sk)
+1 -1
net/xfrm/xfrm_replay.c
··· 532 533 if (replay_esn) { 534 if (replay_esn->replay_window > 535 - replay_esn->bmp_len * sizeof(__u32)) 536 return -EINVAL; 537 538 if ((x->props.flags & XFRM_STATE_ESN) && x->replay_esn)
··· 532 533 if (replay_esn) { 534 if (replay_esn->replay_window > 535 + replay_esn->bmp_len * sizeof(__u32) * 8) 536 return -EINVAL; 537 538 if ((x->props.flags & XFRM_STATE_ESN) && x->replay_esn)
+3
net/xfrm/xfrm_user.c
··· 124 { 125 struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL]; 126 127 if (!rt) 128 return 0; 129
··· 124 { 125 struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL]; 126 127 + if ((p->flags & XFRM_STATE_ESN) && !rt) 128 + return -EINVAL; 129 + 130 if (!rt) 131 return 0; 132