diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-24 16:07:24 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-24 16:07:24 -0400 |
| commit | ca1a6ba57c5fca755b4ac7a13395bca2e2e371b1 (patch) | |
| tree | 1dd8f5090238d644668818c54f9f91b1c5665991 | |
| parent | d3073779f8362d64b804882f5f41c208c4a5e11e (diff) | |
| parent | 8f3ea33a5078a09eba12bfe57424507809367756 (diff) | |
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:
sch_htb: fix "too many events" situation
connector: convert to single-threaded workqueue
[ATM]: When proc_create() fails, do some error handling work and return -ENOMEM.
[SUNGEM]: Fix NAPI assertion failure.
BNX2X: prevent ethtool from setting port type
[9P] net/9p/trans_fd.c: remove unused variable
[IPV6] net/ipv6/ndisc.c: remove unused variable
[IPV4] fib_trie: fix warning from rcu_assign_poinger
[TCP]: Let skbs grow over a page on fast peers
[DLCI]: Fix tiny race between module unload and sock_ioctl.
[SCTP]: Fix build warnings with IPV6 disabled.
[IPV4]: Fix null dereference in ip_defrag
| -rw-r--r-- | drivers/connector/cn_queue.c | 2 | ||||
| -rw-r--r-- | drivers/net/bnx2x.c | 36 | ||||
| -rw-r--r-- | drivers/net/sungem.c | 2 | ||||
| -rw-r--r-- | include/net/sctp/sctp.h | 2 | ||||
| -rw-r--r-- | net/9p/trans_fd.c | 2 | ||||
| -rw-r--r-- | net/atm/clip.c | 19 | ||||
| -rw-r--r-- | net/atm/lec.c | 4 | ||||
| -rw-r--r-- | net/ipv4/fib_trie.c | 7 | ||||
| -rw-r--r-- | net/ipv4/ip_fragment.c | 2 | ||||
| -rw-r--r-- | net/ipv4/tcp.c | 4 | ||||
| -rw-r--r-- | net/ipv6/ndisc.c | 2 | ||||
| -rw-r--r-- | net/sched/sch_htb.c | 13 | ||||
| -rw-r--r-- | net/socket.c | 7 |
13 files changed, 43 insertions, 59 deletions
diff --git a/drivers/connector/cn_queue.c b/drivers/connector/cn_queue.c index 5732ca3259f9..b6fe7e7a2c2f 100644 --- a/drivers/connector/cn_queue.c +++ b/drivers/connector/cn_queue.c | |||
| @@ -146,7 +146,7 @@ struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *nls) | |||
| 146 | 146 | ||
| 147 | dev->nls = nls; | 147 | dev->nls = nls; |
| 148 | 148 | ||
| 149 | dev->cn_queue = create_workqueue(dev->name); | 149 | dev->cn_queue = create_singlethread_workqueue(dev->name); |
| 150 | if (!dev->cn_queue) { | 150 | if (!dev->cn_queue) { |
| 151 | kfree(dev); | 151 | kfree(dev); |
| 152 | return NULL; | 152 | return NULL; |
diff --git a/drivers/net/bnx2x.c b/drivers/net/bnx2x.c index 8af142ccf373..de32b3fba322 100644 --- a/drivers/net/bnx2x.c +++ b/drivers/net/bnx2x.c | |||
| @@ -63,8 +63,8 @@ | |||
| 63 | #include "bnx2x.h" | 63 | #include "bnx2x.h" |
| 64 | #include "bnx2x_init.h" | 64 | #include "bnx2x_init.h" |
| 65 | 65 | ||
| 66 | #define DRV_MODULE_VERSION "1.40.22" | 66 | #define DRV_MODULE_VERSION "1.42.3" |
| 67 | #define DRV_MODULE_RELDATE "2007/11/27" | 67 | #define DRV_MODULE_RELDATE "2008/3/9" |
| 68 | #define BNX2X_BC_VER 0x040200 | 68 | #define BNX2X_BC_VER 0x040200 |
| 69 | 69 | ||
| 70 | /* Time in jiffies before concluding the transmitter is hung. */ | 70 | /* Time in jiffies before concluding the transmitter is hung. */ |
| @@ -8008,38 +8008,6 @@ static int bnx2x_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
| 8008 | cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver, | 8008 | cmd->duplex, cmd->port, cmd->phy_address, cmd->transceiver, |
| 8009 | cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt); | 8009 | cmd->autoneg, cmd->maxtxpkt, cmd->maxrxpkt); |
| 8010 | 8010 | ||
| 8011 | switch (cmd->port) { | ||
| 8012 | case PORT_TP: | ||
| 8013 | if (!(bp->supported & SUPPORTED_TP)) { | ||
| 8014 | DP(NETIF_MSG_LINK, "TP not supported\n"); | ||
| 8015 | return -EINVAL; | ||
| 8016 | } | ||
| 8017 | |||
| 8018 | if (bp->phy_flags & PHY_XGXS_FLAG) { | ||
| 8019 | bnx2x_link_reset(bp); | ||
| 8020 | bnx2x_link_settings_supported(bp, SWITCH_CFG_1G); | ||
| 8021 | bnx2x_phy_deassert(bp); | ||
| 8022 | } | ||
| 8023 | break; | ||
| 8024 | |||
| 8025 | case PORT_FIBRE: | ||
| 8026 | if (!(bp->supported & SUPPORTED_FIBRE)) { | ||
| 8027 | DP(NETIF_MSG_LINK, "FIBRE not supported\n"); | ||
| 8028 | return -EINVAL; | ||
| 8029 | } | ||
| 8030 | |||
| 8031 | if (!(bp->phy_flags & PHY_XGXS_FLAG)) { | ||
| 8032 | bnx2x_link_reset(bp); | ||
| 8033 | bnx2x_link_settings_supported(bp, SWITCH_CFG_10G); | ||
| 8034 | bnx2x_phy_deassert(bp); | ||
| 8035 | } | ||
| 8036 | break; | ||
| 8037 | |||
| 8038 | default: | ||
| 8039 | DP(NETIF_MSG_LINK, "Unknown port type\n"); | ||
| 8040 | return -EINVAL; | ||
| 8041 | } | ||
| 8042 | |||
| 8043 | if (cmd->autoneg == AUTONEG_ENABLE) { | 8011 | if (cmd->autoneg == AUTONEG_ENABLE) { |
| 8044 | if (!(bp->supported & SUPPORTED_Autoneg)) { | 8012 | if (!(bp->supported & SUPPORTED_Autoneg)) { |
| 8045 | DP(NETIF_MSG_LINK, "Aotoneg not supported\n"); | 8013 | DP(NETIF_MSG_LINK, "Aotoneg not supported\n"); |
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index 97212799c513..4291458955ef 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c | |||
| @@ -912,7 +912,7 @@ static int gem_poll(struct napi_struct *napi, int budget) | |||
| 912 | * rx ring - must call napi_disable(), which | 912 | * rx ring - must call napi_disable(), which |
| 913 | * schedule_timeout()'s if polling is already disabled. | 913 | * schedule_timeout()'s if polling is already disabled. |
| 914 | */ | 914 | */ |
| 915 | work_done += gem_rx(gp, budget); | 915 | work_done += gem_rx(gp, budget - work_done); |
| 916 | 916 | ||
| 917 | if (work_done >= budget) | 917 | if (work_done >= budget) |
| 918 | return work_done; | 918 | return work_done; |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 57ed3e323d97..ea806732b084 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
| @@ -389,7 +389,7 @@ void sctp_v6_del_protocol(void); | |||
| 389 | 389 | ||
| 390 | #else /* #ifdef defined(CONFIG_IPV6) */ | 390 | #else /* #ifdef defined(CONFIG_IPV6) */ |
| 391 | 391 | ||
| 392 | static inline void sctp_v6_pf_init(void) { return 0; } | 392 | static inline void sctp_v6_pf_init(void) { return; } |
| 393 | static inline void sctp_v6_pf_exit(void) { return; } | 393 | static inline void sctp_v6_pf_exit(void) { return; } |
| 394 | static inline int sctp_v6_protosw_init(void) { return 0; } | 394 | static inline int sctp_v6_protosw_init(void) { return 0; } |
| 395 | static inline void sctp_v6_protosw_exit(void) { return; } | 395 | static inline void sctp_v6_protosw_exit(void) { return; } |
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index 1aa9d5175398..4e8d4e724b96 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c | |||
| @@ -861,7 +861,6 @@ static void p9_mux_free_request(struct p9_conn *m, struct p9_req *req) | |||
| 861 | 861 | ||
| 862 | static void p9_mux_flush_cb(struct p9_req *freq, void *a) | 862 | static void p9_mux_flush_cb(struct p9_req *freq, void *a) |
| 863 | { | 863 | { |
| 864 | p9_conn_req_callback cb; | ||
| 865 | int tag; | 864 | int tag; |
| 866 | struct p9_conn *m; | 865 | struct p9_conn *m; |
| 867 | struct p9_req *req, *rreq, *rptr; | 866 | struct p9_req *req, *rreq, *rptr; |
| @@ -872,7 +871,6 @@ static void p9_mux_flush_cb(struct p9_req *freq, void *a) | |||
| 872 | freq->tcall->params.tflush.oldtag); | 871 | freq->tcall->params.tflush.oldtag); |
| 873 | 872 | ||
| 874 | spin_lock(&m->lock); | 873 | spin_lock(&m->lock); |
| 875 | cb = NULL; | ||
| 876 | tag = freq->tcall->params.tflush.oldtag; | 874 | tag = freq->tcall->params.tflush.oldtag; |
| 877 | req = NULL; | 875 | req = NULL; |
| 878 | list_for_each_entry_safe(rreq, rptr, &m->req_list, req_list) { | 876 | list_for_each_entry_safe(rreq, rptr, &m->req_list, req_list) { |
diff --git a/net/atm/clip.c b/net/atm/clip.c index d30167c0b48e..2ab1e36098fd 100644 --- a/net/atm/clip.c +++ b/net/atm/clip.c | |||
| @@ -947,6 +947,8 @@ static const struct file_operations arp_seq_fops = { | |||
| 947 | }; | 947 | }; |
| 948 | #endif | 948 | #endif |
| 949 | 949 | ||
| 950 | static void atm_clip_exit_noproc(void); | ||
| 951 | |||
| 950 | static int __init atm_clip_init(void) | 952 | static int __init atm_clip_init(void) |
| 951 | { | 953 | { |
| 952 | neigh_table_init_no_netlink(&clip_tbl); | 954 | neigh_table_init_no_netlink(&clip_tbl); |
| @@ -963,18 +965,22 @@ static int __init atm_clip_init(void) | |||
| 963 | struct proc_dir_entry *p; | 965 | struct proc_dir_entry *p; |
| 964 | 966 | ||
| 965 | p = proc_create("arp", S_IRUGO, atm_proc_root, &arp_seq_fops); | 967 | p = proc_create("arp", S_IRUGO, atm_proc_root, &arp_seq_fops); |
| 968 | if (!p) { | ||
| 969 | printk(KERN_ERR "Unable to initialize " | ||
| 970 | "/proc/net/atm/arp\n"); | ||
| 971 | atm_clip_exit_noproc(); | ||
| 972 | return -ENOMEM; | ||
| 973 | } | ||
| 966 | } | 974 | } |
| 967 | #endif | 975 | #endif |
| 968 | 976 | ||
| 969 | return 0; | 977 | return 0; |
| 970 | } | 978 | } |
| 971 | 979 | ||
| 972 | static void __exit atm_clip_exit(void) | 980 | static void atm_clip_exit_noproc(void) |
| 973 | { | 981 | { |
| 974 | struct net_device *dev, *next; | 982 | struct net_device *dev, *next; |
| 975 | 983 | ||
| 976 | remove_proc_entry("arp", atm_proc_root); | ||
| 977 | |||
| 978 | unregister_inetaddr_notifier(&clip_inet_notifier); | 984 | unregister_inetaddr_notifier(&clip_inet_notifier); |
| 979 | unregister_netdevice_notifier(&clip_dev_notifier); | 985 | unregister_netdevice_notifier(&clip_dev_notifier); |
| 980 | 986 | ||
| @@ -1005,6 +1011,13 @@ static void __exit atm_clip_exit(void) | |||
| 1005 | clip_tbl_hook = NULL; | 1011 | clip_tbl_hook = NULL; |
| 1006 | } | 1012 | } |
| 1007 | 1013 | ||
| 1014 | static void __exit atm_clip_exit(void) | ||
| 1015 | { | ||
| 1016 | remove_proc_entry("arp", atm_proc_root); | ||
| 1017 | |||
| 1018 | atm_clip_exit_noproc(); | ||
| 1019 | } | ||
| 1020 | |||
| 1008 | module_init(atm_clip_init); | 1021 | module_init(atm_clip_init); |
| 1009 | module_exit(atm_clip_exit); | ||
