Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

+188 -150
+2 -3
drivers/net/Kconfig
··· 2020 will be called sis190. This is recommended. 2021 2022 config SKGE 2023 - tristate "New SysKonnect GigaEthernet support (EXPERIMENTAL)" 2024 - depends on PCI && EXPERIMENTAL 2025 select CRC32 2026 ---help--- 2027 This driver support the Marvell Yukon or SysKonnect SK-98xx/SK-95xx ··· 2082 - Allied Telesyn AT-2971SX Gigabit Ethernet Adapter 2083 - Allied Telesyn AT-2971T Gigabit Ethernet Adapter 2084 - Belkin Gigabit Desktop Card 10/100/1000Base-T Adapter, Copper RJ-45 2085 - - DGE-530T Gigabit Ethernet Adapter 2086 - EG1032 v2 Instant Gigabit Network Adapter 2087 - EG1064 v2 Instant Gigabit Network Adapter 2088 - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Abit)
··· 2020 will be called sis190. This is recommended. 2021 2022 config SKGE 2023 + tristate "New SysKonnect GigaEthernet support" 2024 + depends on PCI 2025 select CRC32 2026 ---help--- 2027 This driver support the Marvell Yukon or SysKonnect SK-98xx/SK-95xx ··· 2082 - Allied Telesyn AT-2971SX Gigabit Ethernet Adapter 2083 - Allied Telesyn AT-2971T Gigabit Ethernet Adapter 2084 - Belkin Gigabit Desktop Card 10/100/1000Base-T Adapter, Copper RJ-45 2085 - EG1032 v2 Instant Gigabit Network Adapter 2086 - EG1064 v2 Instant Gigabit Network Adapter 2087 - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Abit)
+1
drivers/net/bonding/bond_main.c
··· 1581 printk(KERN_INFO DRV_NAME 1582 ": %s: %s not enslaved\n", 1583 bond_dev->name, slave_dev->name); 1584 return -EINVAL; 1585 } 1586
··· 1581 printk(KERN_INFO DRV_NAME 1582 ": %s: %s not enslaved\n", 1583 bond_dev->name, slave_dev->name); 1584 + write_unlock_bh(&bond->lock); 1585 return -EINVAL; 1586 } 1587
+2 -2
drivers/net/sis190.c
··· 1791 goto out; 1792 } 1793 1794 tp = netdev_priv(dev); 1795 ioaddr = tp->mmio_addr; 1796 ··· 1828 rc = register_netdev(dev); 1829 if (rc < 0) 1830 goto err_remove_mii; 1831 - 1832 - pci_set_drvdata(pdev, dev); 1833 1834 net_probe(tp, KERN_INFO "%s: %s at %p (IRQ: %d), " 1835 "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
··· 1791 goto out; 1792 } 1793 1794 + pci_set_drvdata(pdev, dev); 1795 + 1796 tp = netdev_priv(dev); 1797 ioaddr = tp->mmio_addr; 1798 ··· 1826 rc = register_netdev(dev); 1827 if (rc < 0) 1828 goto err_remove_mii; 1829 1830 net_probe(tp, KERN_INFO "%s: %s at %p (IRQ: %d), " 1831 "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
+9 -1
drivers/net/skge.c
··· 1697 skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_SET); 1698 skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_CLR); 1699 skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_ON | GMC_RST_CLR); 1700 if (skge->autoneg == AUTONEG_DISABLE) { 1701 reg = GM_GPCR_AU_ALL_DIS; 1702 gma_write16(hw, port, GM_GP_CTRL, ··· 1705 1706 switch (skge->speed) { 1707 case SPEED_1000: 1708 reg |= GM_GPCR_SPEED_1000; 1709 - /* fallthru */ 1710 case SPEED_100: 1711 reg |= GM_GPCR_SPEED_100; 1712 } 1713 1714 if (skge->duplex == DUPLEX_FULL) 1715 reg |= GM_GPCR_DUP_FULL; 1716 } else 1717 reg = GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100 | GM_GPCR_DUP_FULL; 1718 switch (skge->flow_control) { 1719 case FLOW_MODE_NONE: 1720 skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_OFF);
··· 1697 skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_SET); 1698 skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_CLR); 1699 skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_ON | GMC_RST_CLR); 1700 + 1701 if (skge->autoneg == AUTONEG_DISABLE) { 1702 reg = GM_GPCR_AU_ALL_DIS; 1703 gma_write16(hw, port, GM_GP_CTRL, ··· 1704 1705 switch (skge->speed) { 1706 case SPEED_1000: 1707 + reg &= ~GM_GPCR_SPEED_100; 1708 reg |= GM_GPCR_SPEED_1000; 1709 + break; 1710 case SPEED_100: 1711 + reg &= ~GM_GPCR_SPEED_1000; 1712 reg |= GM_GPCR_SPEED_100; 1713 + break; 1714 + case SPEED_10: 1715 + reg &= ~(GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100); 1716 + break; 1717 } 1718 1719 if (skge->duplex == DUPLEX_FULL) 1720 reg |= GM_GPCR_DUP_FULL; 1721 } else 1722 reg = GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100 | GM_GPCR_DUP_FULL; 1723 + 1724 switch (skge->flow_control) { 1725 case FLOW_MODE_NONE: 1726 skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_OFF);
+30 -1
drivers/net/sky2.c
··· 520 521 switch (sky2->speed) { 522 case SPEED_1000: 523 reg |= GM_GPCR_SPEED_1000; 524 - /* fallthru */ 525 case SPEED_100: 526 reg |= GM_GPCR_SPEED_100; 527 } 528 529 if (sky2->duplex == DUPLEX_FULL) ··· 1452 sky2_write8(hw, SK_REG(port, GMAC_IRQ_MSK), GMAC_DEF_MSK); 1453 1454 reg = gma_read16(hw, port, GM_GP_CTRL); 1455 if (sky2->duplex == DUPLEX_FULL || sky2->autoneg == AUTONEG_ENABLE) 1456 reg |= GM_GPCR_DUP_FULL; 1457
··· 520 521 switch (sky2->speed) { 522 case SPEED_1000: 523 + reg &= ~GM_GPCR_SPEED_100; 524 reg |= GM_GPCR_SPEED_1000; 525 + break; 526 case SPEED_100: 527 + reg &= ~GM_GPCR_SPEED_1000; 528 reg |= GM_GPCR_SPEED_100; 529 + break; 530 + case SPEED_10: 531 + reg &= ~(GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100); 532 + break; 533 } 534 535 if (sky2->duplex == DUPLEX_FULL) ··· 1446 sky2_write8(hw, SK_REG(port, GMAC_IRQ_MSK), GMAC_DEF_MSK); 1447 1448 reg = gma_read16(hw, port, GM_GP_CTRL); 1449 + if (sky2->autoneg == AUTONEG_DISABLE) { 1450 + reg |= GM_GPCR_AU_ALL_DIS; 1451 + 1452 + /* Is write/read necessary? Copied from sky2_mac_init */ 1453 + gma_write16(hw, port, GM_GP_CTRL, reg); 1454 + gma_read16(hw, port, GM_GP_CTRL); 1455 + 1456 + switch (sky2->speed) { 1457 + case SPEED_1000: 1458 + reg &= ~GM_GPCR_SPEED_100; 1459 + reg |= GM_GPCR_SPEED_1000; 1460 + break; 1461 + case SPEED_100: 1462 + reg &= ~GM_GPCR_SPEED_1000; 1463 + reg |= GM_GPCR_SPEED_100; 1464 + break; 1465 + case SPEED_10: 1466 + reg &= ~(GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100); 1467 + break; 1468 + } 1469 + } else 1470 + reg &= ~GM_GPCR_AU_ALL_DIS; 1471 + 1472 if (sky2->duplex == DUPLEX_FULL || sky2->autoneg == AUTONEG_ENABLE) 1473 reg |= GM_GPCR_DUP_FULL; 1474
+1 -1
drivers/net/tokenring/smctr.h
··· 1042 __u16 functional_address[2]; 1043 __u16 bitwise_group_address[2]; 1044 1045 - __u8 *ptr_ucode; 1046 1047 __u8 cleanup; 1048
··· 1042 __u16 functional_address[2]; 1043 __u16 bitwise_group_address[2]; 1044 1045 + const __u8 *ptr_ucode; 1046 1047 __u8 cleanup; 1048
+60 -40
drivers/net/wireless/atmel.c
··· 1872 struct atmel_private *priv = netdev_priv(dev); 1873 struct iw_point *encoding = &wrqu->encoding; 1874 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; 1875 - int idx, key_len; 1876 1877 /* Determine and validate the key index */ 1878 idx = encoding->flags & IW_ENCODE_INDEX; ··· 1883 } else 1884 idx = priv->default_key; 1885 1886 - if ((encoding->flags & IW_ENCODE_DISABLED) || 1887 - ext->alg == IW_ENCODE_ALG_NONE) { 1888 - priv->wep_is_on = 0; 1889 - priv->encryption_level = 0; 1890 - priv->pairwise_cipher_suite = CIPHER_SUITE_NONE; 1891 } 1892 1893 - if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) 1894 - priv->default_key = idx; 1895 - 1896 - /* Set the requested key */ 1897 - switch (ext->alg) { 1898 - case IW_ENCODE_ALG_NONE: 1899 - break; 1900 - case IW_ENCODE_ALG_WEP: 1901 - if (ext->key_len > 5) { 1902 - priv->wep_key_len[idx] = 13; 1903 - priv->pairwise_cipher_suite = CIPHER_SUITE_WEP_128; 1904 - priv->encryption_level = 2; 1905 - } else if (ext->key_len > 0) { 1906 - priv->wep_key_len[idx] = 5; 1907 - priv->pairwise_cipher_suite = CIPHER_SUITE_WEP_64; 1908 - priv->encryption_level = 1; 1909 - } else { 1910 return -EINVAL; 1911 } 1912 - priv->wep_is_on = 1; 1913 - memset(priv->wep_keys[idx], 0, 13); 1914 - key_len = min ((int)ext->key_len, priv->wep_key_len[idx]); 1915 - memcpy(priv->wep_keys[idx], ext->key, key_len); 1916 - break; 1917 - default: 1918 - return -EINVAL; 1919 } 1920 1921 return -EINPROGRESS; ··· 3064 } 3065 3066 if (status == C80211_MGMT_SC_Success && priv->wep_is_on) { 3067 /* WEP */ 3068 if (trans_seq_no != priv->ExpectedAuthentTransactionSeqNum) 3069 return; 3070 3071 - if (trans_seq_no == 0x0002 && 3072 - auth->el_id == C80211_MGMT_ElementID_ChallengeText) { 3073 - send_authentication_request(priv, system, auth->chall_text, auth->chall_text_len); 3074 - return; 3075 } 3076 3077 - if (trans_seq_no == 0x0004) { 3078 if(priv->station_was_associated) { 3079 atmel_enter_state(priv, STATION_STATE_REASSOCIATING); 3080 send_association_request(priv, 1); ··· 3096 } 3097 } 3098 3099 - if (status == C80211_MGMT_SC_AuthAlgNotSupported) { 3100 /* Do opensystem first, then try sharedkey */ 3101 - if (system == C80211_MGMT_AAN_OPENSYSTEM) { 3102 priv->CurrentAuthentTransactionSeqNum = 0x001; 3103 - send_authentication_request(priv, C80211_MGMT_AAN_SHAREDKEY, NULL, 0); 3104 } else if (priv->connect_to_any_BSS) { 3105 int bss_index; 3106 ··· 3453 priv->AuthenticationRequestRetryCnt = 0; 3454 restart_search(priv); 3455 } else { 3456 priv->AuthenticationRequestRetryCnt++; 3457 priv->CurrentAuthentTransactionSeqNum = 0x0001; 3458 mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); 3459 - send_authentication_request(priv, C80211_MGMT_AAN_OPENSYSTEM, NULL, 0); 3460 } 3461 break; 3462 ··· 3558 priv->station_was_associated = priv->station_is_associated; 3559 atmel_enter_state(priv, STATION_STATE_READY); 3560 } else { 3561 priv->AuthenticationRequestRetryCnt = 0; 3562 atmel_enter_state(priv, STATION_STATE_AUTHENTICATING); 3563 3564 mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); 3565 priv->CurrentAuthentTransactionSeqNum = 0x0001; 3566 - send_authentication_request(priv, C80211_MGMT_AAN_SHAREDKEY, NULL, 0); 3567 } 3568 return; 3569 }
··· 1872 struct atmel_private *priv = netdev_priv(dev); 1873 struct iw_point *encoding = &wrqu->encoding; 1874 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; 1875 + int idx, key_len, alg = ext->alg, set_key = 1; 1876 1877 /* Determine and validate the key index */ 1878 idx = encoding->flags & IW_ENCODE_INDEX; ··· 1883 } else 1884 idx = priv->default_key; 1885 1886 + if (encoding->flags & IW_ENCODE_DISABLED) 1887 + alg = IW_ENCODE_ALG_NONE; 1888 + 1889 + if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) { 1890 + priv->default_key = idx; 1891 + set_key = ext->key_len > 0 ? 1 : 0; 1892 } 1893 1894 + if (set_key) { 1895 + /* Set the requested key first */ 1896 + switch (alg) { 1897 + case IW_ENCODE_ALG_NONE: 1898 + priv->wep_is_on = 0; 1899 + priv->encryption_level = 0; 1900 + priv->pairwise_cipher_suite = CIPHER_SUITE_NONE; 1901 + break; 1902 + case IW_ENCODE_ALG_WEP: 1903 + if (ext->key_len > 5) { 1904 + priv->wep_key_len[idx] = 13; 1905 + priv->pairwise_cipher_suite = CIPHER_SUITE_WEP_128; 1906 + priv->encryption_level = 2; 1907 + } else if (ext->key_len > 0) { 1908 + priv->wep_key_len[idx] = 5; 1909 + priv->pairwise_cipher_suite = CIPHER_SUITE_WEP_64; 1910 + priv->encryption_level = 1; 1911 + } else { 1912 + return -EINVAL; 1913 + } 1914 + priv->wep_is_on = 1; 1915 + memset(priv->wep_keys[idx], 0, 13); 1916 + key_len = min ((int)ext->key_len, priv->wep_key_len[idx]); 1917 + memcpy(priv->wep_keys[idx], ext->key, key_len); 1918 + break; 1919 + default: 1920 return -EINVAL; 1921 } 1922 } 1923 1924 return -EINPROGRESS; ··· 3061 } 3062 3063 if (status == C80211_MGMT_SC_Success && priv->wep_is_on) { 3064 + int should_associate = 0; 3065 /* WEP */ 3066 if (trans_seq_no != priv->ExpectedAuthentTransactionSeqNum) 3067 return; 3068 3069 + if (system == C80211_MGMT_AAN_OPENSYSTEM) { 3070 + if (trans_seq_no == 0x0002) { 3071 + should_associate = 1; 3072 + } 3073 + } else if (system == C80211_MGMT_AAN_SHAREDKEY) { 3074 + if (trans_seq_no == 0x0002 && 3075 + auth->el_id == C80211_MGMT_ElementID_ChallengeText) { 3076 + send_authentication_request(priv, system, auth->chall_text, auth->chall_text_len); 3077 + return; 3078 + } else if (trans_seq_no == 0x0004) { 3079 + should_associate = 1; 3080 + } 3081 } 3082 3083 + if (should_associate) { 3084 if(priv->station_was_associated) { 3085 atmel_enter_state(priv, STATION_STATE_REASSOCIATING); 3086 send_association_request(priv, 1); ··· 3084 } 3085 } 3086 3087 + if (status == WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG) { 3088 /* Do opensystem first, then try sharedkey */ 3089 + if (system == WLAN_AUTH_OPEN) { 3090 priv->CurrentAuthentTransactionSeqNum = 0x001; 3091 + priv->exclude_unencrypted = 1; 3092 + send_authentication_request(priv, WLAN_AUTH_SHARED_KEY, NULL, 0); 3093 + return; 3094 } else if (priv->connect_to_any_BSS) { 3095 int bss_index; 3096 ··· 3439 priv->AuthenticationRequestRetryCnt = 0; 3440 restart_search(priv); 3441 } else { 3442 + int auth = C80211_MGMT_AAN_OPENSYSTEM; 3443 priv->AuthenticationRequestRetryCnt++; 3444 priv->CurrentAuthentTransactionSeqNum = 0x0001; 3445 mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); 3446 + if (priv->wep_is_on && priv->exclude_unencrypted) 3447 + auth = C80211_MGMT_AAN_SHAREDKEY; 3448 + send_authentication_request(priv, auth, NULL, 0); 3449 } 3450 break; 3451 ··· 3541 priv->station_was_associated = priv->station_is_associated; 3542 atmel_enter_state(priv, STATION_STATE_READY); 3543 } else { 3544 + int auth = C80211_MGMT_AAN_OPENSYSTEM; 3545 priv->AuthenticationRequestRetryCnt = 0; 3546 atmel_enter_state(priv, STATION_STATE_AUTHENTICATING); 3547 3548 mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES); 3549 priv->CurrentAuthentTransactionSeqNum = 0x0001; 3550 + if (priv->wep_is_on && priv->exclude_unencrypted) 3551 + auth = C80211_MGMT_AAN_SHAREDKEY; 3552 + send_authentication_request(priv, auth, NULL, 0); 3553 } 3554 return; 3555 }
+4 -12
drivers/net/wireless/wavelan_cs.c
··· 950 static inline int 951 wv_diag(struct net_device * dev) 952 { 953 - int ret = FALSE; 954 - 955 - if(wv_82593_cmd(dev, "wv_diag(): diagnose", 956 - OP0_DIAGNOSE, SR0_DIAGNOSE_PASSED)) 957 - ret = TRUE; 958 - 959 - #ifdef DEBUG_CONFIG_ERRORS 960 - printk(KERN_INFO "wavelan_cs: i82593 Self Test failed!\n"); 961 - #endif 962 - return(ret); 963 } /* wv_diag */ 964 965 /*------------------------------------------------------------------*/ ··· 3596 cfblk.lin_prio = 0; /* conform to 802.3 backoff algoritm */ 3597 cfblk.exp_prio = 5; /* conform to 802.3 backoff algoritm */ 3598 cfblk.bof_met = 1; /* conform to 802.3 backoff algoritm */ 3599 - cfblk.ifrm_spc = 0x20; /* 32 bit times interframe spacing */ 3600 - cfblk.slottim_low = 0x20; /* 32 bit times slot time */ 3601 cfblk.slottim_hi = 0x0; 3602 cfblk.max_retr = 15; 3603 cfblk.prmisc = ((lp->promiscuous) ? TRUE: FALSE); /* Promiscuous mode */
··· 950 static inline int 951 wv_diag(struct net_device * dev) 952 { 953 + return(wv_82593_cmd(dev, "wv_diag(): diagnose", 954 + OP0_DIAGNOSE, SR0_DIAGNOSE_PASSED)); 955 } /* wv_diag */ 956 957 /*------------------------------------------------------------------*/ ··· 3604 cfblk.lin_prio = 0; /* conform to 802.3 backoff algoritm */ 3605 cfblk.exp_prio = 5; /* conform to 802.3 backoff algoritm */ 3606 cfblk.bof_met = 1; /* conform to 802.3 backoff algoritm */ 3607 + cfblk.ifrm_spc = 0x20 >> 4; /* 32 bit times interframe spacing */ 3608 + cfblk.slottim_low = 0x20 >> 5; /* 32 bit times slot time */ 3609 cfblk.slottim_hi = 0x0; 3610 cfblk.max_retr = 15; 3611 cfblk.prmisc = ((lp->promiscuous) ? TRUE: FALSE); /* Promiscuous mode */
+17 -14
drivers/s390/net/lcs.c
··· 98 return -ENOMEM; 99 } 100 debug_register_view(lcs_dbf_setup, &debug_hex_ascii_view); 101 - debug_set_level(lcs_dbf_setup, 4); 102 debug_register_view(lcs_dbf_trace, &debug_hex_ascii_view); 103 - debug_set_level(lcs_dbf_trace, 4); 104 return 0; 105 } 106 ··· 1292 LCS_DBF_TEXT(4, trace, "setmulti"); 1293 card = (struct lcs_card *) dev->priv; 1294 1295 - if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD)) { 1296 schedule_work(&card->kernel_thread_starter); 1297 - } 1298 } 1299 1300 #endif /* CONFIG_IP_MULTICAST */ ··· 1458 lcs_release_buffer(channel, buffer); 1459 card = (struct lcs_card *) 1460 ((char *) channel - offsetof(struct lcs_card, write)); 1461 spin_lock(&card->lock); 1462 card->tx_emitted--; 1463 if (card->tx_emitted <= 0 && card->tx_buffer != NULL) ··· 1479 struct net_device *dev) 1480 { 1481 struct lcs_header *header; 1482 1483 LCS_DBF_TEXT(5, trace, "hardxmit"); 1484 if (skb == NULL) { ··· 1494 card->stats.tx_carrier_errors++; 1495 return 0; 1496 } 1497 - if (netif_queue_stopped(dev) ) { 1498 - card->stats.tx_dropped++; 1499 - return -EBUSY; 1500 - } 1501 if (card->tx_buffer != NULL && 1502 card->tx_buffer->count + sizeof(struct lcs_header) + 1503 skb->len + sizeof(u16) > LCS_IOBUFFERSIZE) ··· 1506 card->tx_buffer = lcs_get_buffer(&card->write); 1507 if (card->tx_buffer == NULL) { 1508 card->stats.tx_dropped++; 1509 - return -EBUSY; 1510 } 1511 card->tx_buffer->callback = lcs_txbuffer_cb; 1512 card->tx_buffer->count = 0; ··· 1519 header->type = card->lan_type; 1520 header->slot = card->portno; 1521 memcpy(header + 1, skb->data, skb->len); 1522 card->stats.tx_bytes += skb->len; 1523 card->stats.tx_packets++; 1524 dev_kfree_skb(skb); 1525 - if (card->tx_emitted <= 0) 1526 /* If this is the first tx buffer emit it immediately. */ 1527 __lcs_emit_txbuffer(card); 1528 - return 0; 1529 } 1530 1531 static int ··· 1541 1542 LCS_DBF_TEXT(5, trace, "pktxmit"); 1543 card = (struct lcs_card *) dev->priv; 1544 - spin_lock(&card->lock); 1545 rc = __lcs_start_xmit(card, skb, dev); 1546 - spin_unlock(&card->lock); 1547 return rc; 1548 } 1549 ··· 2323 PRINT_ERR("Initialization failed\n"); 2324 return rc; 2325 } 2326 - 2327 return 0; 2328 } 2329
··· 98 return -ENOMEM; 99 } 100 debug_register_view(lcs_dbf_setup, &debug_hex_ascii_view); 101 + debug_set_level(lcs_dbf_setup, 2); 102 debug_register_view(lcs_dbf_trace, &debug_hex_ascii_view); 103 + debug_set_level(lcs_dbf_trace, 2); 104 return 0; 105 } 106 ··· 1292 LCS_DBF_TEXT(4, trace, "setmulti"); 1293 card = (struct lcs_card *) dev->priv; 1294 1295 + if (!lcs_set_thread_start_bit(card, LCS_SET_MC_THREAD)) 1296 schedule_work(&card->kernel_thread_starter); 1297 } 1298 1299 #endif /* CONFIG_IP_MULTICAST */ ··· 1459 lcs_release_buffer(channel, buffer); 1460 card = (struct lcs_card *) 1461 ((char *) channel - offsetof(struct lcs_card, write)); 1462 + if (netif_queue_stopped(card->dev)) 1463 + netif_wake_queue(card->dev); 1464 spin_lock(&card->lock); 1465 card->tx_emitted--; 1466 if (card->tx_emitted <= 0 && card->tx_buffer != NULL) ··· 1478 struct net_device *dev) 1479 { 1480 struct lcs_header *header; 1481 + int rc = 0; 1482 1483 LCS_DBF_TEXT(5, trace, "hardxmit"); 1484 if (skb == NULL) { ··· 1492 card->stats.tx_carrier_errors++; 1493 return 0; 1494 } 1495 + netif_stop_queue(card->dev); 1496 + spin_lock(&card->lock); 1497 if (card->tx_buffer != NULL && 1498 card->tx_buffer->count + sizeof(struct lcs_header) + 1499 skb->len + sizeof(u16) > LCS_IOBUFFERSIZE) ··· 1506 card->tx_buffer = lcs_get_buffer(&card->write); 1507 if (card->tx_buffer == NULL) { 1508 card->stats.tx_dropped++; 1509 + rc = -EBUSY; 1510 + goto out; 1511 } 1512 card->tx_buffer->callback = lcs_txbuffer_cb; 1513 card->tx_buffer->count = 0; ··· 1518 header->type = card->lan_type; 1519 header->slot = card->portno; 1520 memcpy(header + 1, skb->data, skb->len); 1521 + spin_unlock(&card->lock); 1522 card->stats.tx_bytes += skb->len; 1523 card->stats.tx_packets++; 1524 dev_kfree_skb(skb); 1525 + netif_wake_queue(card->dev); 1526 + spin_lock(&card->lock); 1527 + if (card->tx_emitted <= 0 && card->tx_buffer != NULL) 1528 /* If this is the first tx buffer emit it immediately. */ 1529 __lcs_emit_txbuffer(card); 1530 + out: 1531 + spin_unlock(&card->lock); 1532 + return rc; 1533 } 1534 1535 static int ··· 1535 1536 LCS_DBF_TEXT(5, trace, "pktxmit"); 1537 card = (struct lcs_card *) dev->priv; 1538 rc = __lcs_start_xmit(card, skb, dev); 1539 return rc; 1540 } 1541 ··· 2319 PRINT_ERR("Initialization failed\n"); 2320 return rc; 2321 } 2322 return 0; 2323 } 2324
+1 -1
drivers/s390/net/lcs.h
··· 95 */ 96 #define LCS_ILLEGAL_OFFSET 0xffff 97 #define LCS_IOBUFFERSIZE 0x5000 98 - #define LCS_NUM_BUFFS 8 /* needs to be power of 2 */ 99 #define LCS_MAC_LENGTH 6 100 #define LCS_INVALID_PORT_NO -1 101 #define LCS_LANCMD_TIMEOUT_DEFAULT 5
··· 95 */ 96 #define LCS_ILLEGAL_OFFSET 0xffff 97 #define LCS_IOBUFFERSIZE 0x5000 98 + #define LCS_NUM_BUFFS 32 /* needs to be power of 2 */ 99 #define LCS_MAC_LENGTH 6 100 #define LCS_INVALID_PORT_NO -1 101 #define LCS_LANCMD_TIMEOUT_DEFAULT 5
+45 -63
drivers/s390/net/qeth.h
··· 1076 } 1077 1078 static inline int 1079 - qeth_isdigit(char * buf) 1080 - { 1081 - while (*buf) { 1082 - if (!isdigit(*buf++)) 1083 - return 0; 1084 - } 1085 - return 1; 1086 - } 1087 - 1088 - static inline int 1089 qeth_isxdigit(char * buf) 1090 { 1091 while (*buf) { ··· 1094 static inline int 1095 qeth_string_to_ipaddr4(const char *buf, __u8 *addr) 1096 { 1097 - const char *start, *end; 1098 - char abuf[4]; 1099 - char *tmp; 1100 - int len; 1101 - int i; 1102 1103 - start = buf; 1104 - for (i = 0; i < 4; i++) { 1105 - if (i == 3) { 1106 - end = strchr(start,0xa); 1107 - if (end) 1108 - len = end - start; 1109 - else 1110 - len = strlen(start); 1111 - } 1112 - else { 1113 - end = strchr(start, '.'); 1114 - len = end - start; 1115 - } 1116 - if ((len <= 0) || (len > 3)) 1117 return -EINVAL; 1118 - memset(abuf, 0, 4); 1119 - strncpy(abuf, start, len); 1120 - if (!qeth_isdigit(abuf)) 1121 - return -EINVAL; 1122 - addr[i] = simple_strtoul(abuf, &tmp, 10); 1123 - start = end + 1; 1124 } 1125 return 0; 1126 } ··· 1123 static inline int 1124 qeth_string_to_ipaddr6(const char *buf, __u8 *addr) 1125 { 1126 - const char *start, *end; 1127 - u16 *tmp_addr; 1128 - char abuf[5]; 1129 - char *tmp; 1130 - int len; 1131 - int i; 1132 1133 - tmp_addr = (u16 *)addr; 1134 - start = buf; 1135 - for (i = 0; i < 8; i++) { 1136 - if (i == 7) { 1137 - end = strchr(start,0xa); 1138 - if (end) 1139 - len = end - start; 1140 - else 1141 - len = strlen(start); 1142 } 1143 - else { 1144 - end = strchr(start, ':'); 1145 - len = end - start; 1146 - } 1147 - if ((len <= 0) || (len > 4)) 1148 - return -EINVAL; 1149 - memset(abuf, 0, 5); 1150 - strncpy(abuf, start, len); 1151 - if (!qeth_isxdigit(abuf)) 1152 - return -EINVAL; 1153 - tmp_addr[i] = simple_strtoul(abuf, &tmp, 16); 1154 - start = end + 1; 1155 - } 1156 return 0; 1157 } 1158
··· 1076 } 1077 1078 static inline int 1079 qeth_isxdigit(char * buf) 1080 { 1081 while (*buf) { ··· 1104 static inline int 1105 qeth_string_to_ipaddr4(const char *buf, __u8 *addr) 1106 { 1107 + int count = 0, rc = 0; 1108 + int in[4]; 1109 1110 + rc = sscanf(buf, "%d.%d.%d.%d%n", 1111 + &in[0], &in[1], &in[2], &in[3], &count); 1112 + if (rc != 4 || count) 1113 + return -EINVAL; 1114 + for (count = 0; count < 4; count++) { 1115 + if (in[count] > 255) 1116 return -EINVAL; 1117 + addr[count] = in[count]; 1118 } 1119 return 0; 1120 } ··· 1149 static inline int 1150 qeth_string_to_ipaddr6(const char *buf, __u8 *addr) 1151 { 1152 + char *end, *start; 1153 + __u16 *in; 1154 + char num[5]; 1155 + int num2, cnt, out, found, save_cnt; 1156 + unsigned short in_tmp[8] = {0, }; 1157 1158 + cnt = out = found = save_cnt = num2 = 0; 1159 + end = start = (char *) buf; 1160 + in = (__u16 *) addr; 1161 + memset(in, 0, 16); 1162 + while (end) { 1163 + end = strchr(end,':'); 1164 + if (end == NULL) { 1165 + end = (char *)buf + (strlen(buf)); 1166 + out = 1; 1167 + } 1168 + if ((end - start)) { 1169 + memset(num, 0, 5); 1170 + memcpy(num, start, end - start); 1171 + if (!qeth_isxdigit(num)) 1172 + return -EINVAL; 1173 + sscanf(start, "%x", &num2); 1174 + if (found) 1175 + in_tmp[save_cnt++] = num2; 1176 + else 1177 + in[cnt++] = num2; 1178 + if (out) 1179 + break; 1180 + } else { 1181 + if (found) 1182 + return -EINVAL; 1183 + found = 1; 1184 } 1185 + start = ++end; 1186 + } 1187 + cnt = 7; 1188 + while (save_cnt) 1189 + in[cnt--] = in_tmp[--save_cnt]; 1190 return 0; 1191 } 1192
+9 -2
drivers/s390/net/qeth_eddp.c
··· 59 for (i = 0; i < ctx->num_pages; ++i) 60 free_page((unsigned long)ctx->pages[i]); 61 kfree(ctx->pages); 62 - if (ctx->elements != NULL) 63 - kfree(ctx->elements); 64 kfree(ctx); 65 } 66 ··· 412 413 QETH_DBF_TEXT(trace, 5, "eddpftcp"); 414 eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl; 415 tcph = eddp->skb->h.th; 416 while (eddp->skb_offset < eddp->skb->len) { 417 data_len = min((int)skb_shinfo(eddp->skb)->tso_size, ··· 489 return -ENOMEM; 490 } 491 if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { 492 memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN); 493 #ifdef CONFIG_QETH_VLAN 494 if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) {
··· 59 for (i = 0; i < ctx->num_pages; ++i) 60 free_page((unsigned long)ctx->pages[i]); 61 kfree(ctx->pages); 62 + kfree(ctx->elements); 63 kfree(ctx); 64 } 65 ··· 413 414 QETH_DBF_TEXT(trace, 5, "eddpftcp"); 415 eddp->skb_offset = sizeof(struct qeth_hdr) + eddp->nhl + eddp->thl; 416 + if (eddp->qh.hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { 417 + eddp->skb_offset += sizeof(struct ethhdr); 418 + #ifdef CONFIG_QETH_VLAN 419 + if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) 420 + eddp->skb_offset += VLAN_HLEN; 421 + #endif /* CONFIG_QETH_VLAN */ 422 + } 423 tcph = eddp->skb->h.th; 424 while (eddp->skb_offset < eddp->skb->len) { 425 data_len = min((int)skb_shinfo(eddp->skb)->tso_size, ··· 483 return -ENOMEM; 484 } 485 if (qhdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) { 486 + skb->mac.raw = (skb->data) + sizeof(struct qeth_hdr); 487 memcpy(&eddp->mac, eth_hdr(skb), ETH_HLEN); 488 #ifdef CONFIG_QETH_VLAN 489 if (eddp->mac.h_proto == __constant_htons(ETH_P_8021Q)) {
+7 -10
drivers/s390/net/qeth_main.c
··· 516 QETH_DBF_TEXT(setup, 3, "setoffl"); 517 QETH_DBF_HEX(setup, 3, &card, sizeof(void *)); 518 519 - netif_carrier_off(card->dev); 520 recover_flag = card->state; 521 if (qeth_stop_card(card, recovery_mode) == -ERESTARTSYS){ 522 PRINT_WARN("Stopping card %s interrupted by user!\n", ··· 1680 spin_unlock_irqrestore(&reply->card->lock, flags); 1681 } 1682 1683 static struct qeth_ipa_cmd * 1684 qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob) 1685 { ··· 1701 QETH_CARD_IFNAME(card), 1702 card->info.chpid); 1703 card->lan_online = 0; 1704 - netif_carrier_off(card->dev); 1705 return NULL; 1706 case IPA_CMD_STARTLAN: 1707 PRINT_INFO("Link reestablished on %s " ··· 5565 if (card->info.type == QETH_CARD_TYPE_OSN) 5566 return ; 5567 5568 - QETH_DBF_TEXT(trace,3,"setmulti"); 5569 qeth_delete_mc_addresses(card); 5570 if (card->options.layer2) { 5571 qeth_layer2_add_multicast(card); ··· 5582 return; 5583 if (qeth_set_thread_start_bit(card, QETH_SET_PROMISC_MODE_THREAD)==0) 5584 schedule_work(&card->kernel_thread_starter); 5585 - 5586 } 5587 5588 static int ··· 7454 card->lan_online = 1; 7455 if (card->info.type==QETH_CARD_TYPE_OSN) 7456 goto out; 7457 if (card->options.layer2) { 7458 card->dev->features |= 7459 NETIF_F_HW_VLAN_FILTER | ··· 7471 #endif 7472 goto out; 7473 } 7474 - if ((card->options.large_send == QETH_LARGE_SEND_EDDP) || 7475 - (card->options.large_send == QETH_LARGE_SEND_TSO)) 7476 - card->dev->features |= NETIF_F_TSO | NETIF_F_SG; 7477 - else 7478 - card->dev->features &= ~(NETIF_F_TSO | NETIF_F_SG); 7479 - 7480 if ((rc = qeth_setadapter_parms(card))) 7481 QETH_DBF_TEXT_(setup, 2, "2err%d", rc); 7482 if ((rc = qeth_start_ipassists(card)))
··· 516 QETH_DBF_TEXT(setup, 3, "setoffl"); 517 QETH_DBF_HEX(setup, 3, &card, sizeof(void *)); 518 519 + if (card->dev && netif_carrier_ok(card->dev)) 520 + netif_carrier_off(card->dev); 521 recover_flag = card->state; 522 if (qeth_stop_card(card, recovery_mode) == -ERESTARTSYS){ 523 PRINT_WARN("Stopping card %s interrupted by user!\n", ··· 1679 spin_unlock_irqrestore(&reply->card->lock, flags); 1680 } 1681 1682 + 1683 static struct qeth_ipa_cmd * 1684 qeth_check_ipa_data(struct qeth_card *card, struct qeth_cmd_buffer *iob) 1685 { ··· 1699 QETH_CARD_IFNAME(card), 1700 card->info.chpid); 1701 card->lan_online = 0; 1702 + if (card->dev && netif_carrier_ok(card->dev)) 1703 + netif_carrier_off(card->dev); 1704 return NULL; 1705 case IPA_CMD_STARTLAN: 1706 PRINT_INFO("Link reestablished on %s " ··· 5562 if (card->info.type == QETH_CARD_TYPE_OSN) 5563 return ; 5564 5565 + QETH_DBF_TEXT(trace, 3, "setmulti"); 5566 qeth_delete_mc_addresses(card); 5567 if (card->options.layer2) { 5568 qeth_layer2_add_multicast(card); ··· 5579 return; 5580 if (qeth_set_thread_start_bit(card, QETH_SET_PROMISC_MODE_THREAD)==0) 5581 schedule_work(&card->kernel_thread_starter); 5582 } 5583 5584 static int ··· 7452 card->lan_online = 1; 7453 if (card->info.type==QETH_CARD_TYPE_OSN) 7454 goto out; 7455 + qeth_set_large_send(card, card->options.large_send); 7456 if (card->options.layer2) { 7457 card->dev->features |= 7458 NETIF_F_HW_VLAN_FILTER | ··· 7468 #endif 7469 goto out; 7470 } 7471 if ((rc = qeth_setadapter_parms(card))) 7472 QETH_DBF_TEXT_(setup, 2, "2err%d", rc); 7473 if ((rc = qeth_start_ipassists(card)))