diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/pktgen.c | 9 | ||||
-rw-r--r-- | net/ipv4/af_inet.c | 1 | ||||
-rw-r--r-- | net/ipv4/ipmr.c | 9 | ||||
-rw-r--r-- | net/ipv4/udp.c | 1 | ||||
-rw-r--r-- | net/phonet/af_phonet.c | 52 | ||||
-rw-r--r-- | net/sched/sch_generic.c | 7 |
6 files changed, 39 insertions, 40 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index a47f5bad110d..8997e912aaaf 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c | |||
@@ -1973,13 +1973,7 @@ static void pktgen_setup_inject(struct pktgen_dev *pkt_dev) | |||
1973 | 1973 | ||
1974 | /* make sure that we don't pick a non-existing transmit queue */ | 1974 | /* make sure that we don't pick a non-existing transmit queue */ |
1975 | ntxq = pkt_dev->odev->real_num_tx_queues; | 1975 | ntxq = pkt_dev->odev->real_num_tx_queues; |
1976 | if (ntxq > num_online_cpus() && (pkt_dev->flags & F_QUEUE_MAP_CPU)) { | 1976 | |
1977 | printk(KERN_WARNING "pktgen: WARNING: QUEUE_MAP_CPU " | ||
1978 | "disabled because CPU count (%d) exceeds number " | ||
1979 | "of tx queues (%d) on %s\n", num_online_cpus(), ntxq, | ||
1980 | pkt_dev->odev->name); | ||
1981 | pkt_dev->flags &= ~F_QUEUE_MAP_CPU; | ||
1982 | } | ||
1983 | if (ntxq <= pkt_dev->queue_map_min) { | 1977 | if (ntxq <= pkt_dev->queue_map_min) { |
1984 | printk(KERN_WARNING "pktgen: WARNING: Requested " | 1978 | printk(KERN_WARNING "pktgen: WARNING: Requested " |
1985 | "queue_map_min (zero-based) (%d) exceeds valid range " | 1979 | "queue_map_min (zero-based) (%d) exceeds valid range " |
@@ -2202,6 +2196,7 @@ static void set_cur_queue_map(struct pktgen_dev *pkt_dev) | |||
2202 | } | 2196 | } |
2203 | pkt_dev->cur_queue_map = t; | 2197 | pkt_dev->cur_queue_map = t; |
2204 | } | 2198 | } |
2199 | pkt_dev->cur_queue_map = pkt_dev->cur_queue_map % pkt_dev->odev->real_num_tx_queues; | ||
2205 | } | 2200 | } |
2206 | 2201 | ||
2207 | /* Increment/randomize headers according to flags and current values | 2202 | /* Increment/randomize headers according to flags and current values |
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 1fbff5fa4241..1aa2dc9e380e 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c | |||
@@ -1117,6 +1117,7 @@ int inet_sk_rebuild_header(struct sock *sk) | |||
1117 | }, | 1117 | }, |
1118 | }, | 1118 | }, |
1119 | .proto = sk->sk_protocol, | 1119 | .proto = sk->sk_protocol, |
1120 | .flags = inet_sk_flowi_flags(sk), | ||
1120 | .uli_u = { | 1121 | .uli_u = { |
1121 | .ports = { | 1122 | .ports = { |
1122 | .sport = inet->sport, | 1123 | .sport = inet->sport, |
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index b42e082cc170..25924b1eb2ef 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c | |||
@@ -1945,13 +1945,14 @@ int __init ip_mr_init(void) | |||
1945 | goto proc_cache_fail; | 1945 | goto proc_cache_fail; |
1946 | #endif | 1946 | #endif |
1947 | return 0; | 1947 | return 0; |
1948 | reg_notif_fail: | ||
1949 | kmem_cache_destroy(mrt_cachep); | ||
1950 | #ifdef CONFIG_PROC_FS | 1948 | #ifdef CONFIG_PROC_FS |
1951 | proc_vif_fail: | ||
1952 | unregister_netdevice_notifier(&ip_mr_notifier); | ||
1953 | proc_cache_fail: | 1949 | proc_cache_fail: |
1954 | proc_net_remove(&init_net, "ip_mr_vif"); | 1950 | proc_net_remove(&init_net, "ip_mr_vif"); |
1951 | proc_vif_fail: | ||
1952 | unregister_netdevice_notifier(&ip_mr_notifier); | ||
1955 | #endif | 1953 | #endif |
1954 | reg_notif_fail: | ||
1955 | del_timer(&ipmr_expire_timer); | ||
1956 | kmem_cache_destroy(mrt_cachep); | ||
1956 | return err; | 1957 | return err; |
1957 | } | 1958 | } |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index cf02701ced48..98c1fd09be88 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -633,6 +633,7 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
633 | .saddr = saddr, | 633 | .saddr = saddr, |
634 | .tos = tos } }, | 634 | .tos = tos } }, |
635 | .proto = sk->sk_protocol, | 635 | .proto = sk->sk_protocol, |
636 | .flags = inet_sk_flowi_flags(sk), | ||
636 | .uli_u = { .ports = | 637 | .uli_u = { .ports = |
637 | { .sport = inet->sport, | 638 | { .sport = inet->sport, |
638 | .dport = dport } } }; | 639 | .dport = dport } } }; |
diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c index 7ab30f668b5a..9d211f12582b 100644 --- a/net/phonet/af_phonet.c +++ b/net/phonet/af_phonet.c | |||
@@ -33,9 +33,30 @@ | |||
33 | #include <net/phonet/phonet.h> | 33 | #include <net/phonet/phonet.h> |
34 | #include <net/phonet/pn_dev.h> | 34 | #include <net/phonet/pn_dev.h> |
35 | 35 | ||
36 | static struct net_proto_family phonet_proto_family; | 36 | /* Transport protocol registration */ |
37 | static struct phonet_protocol *phonet_proto_get(int protocol); | 37 | static struct phonet_protocol *proto_tab[PHONET_NPROTO] __read_mostly; |
38 | static inline void phonet_proto_put(struct phonet_protocol *pp); | 38 | static DEFINE_SPINLOCK(proto_tab_lock); |
39 | |||
40 | static struct phonet_protocol *phonet_proto_get(int protocol) | ||
41 | { | ||
42 | struct phonet_protocol *pp; | ||
43 | |||
44 | if (protocol >= PHONET_NPROTO) | ||
45 | return NULL; | ||
46 | |||
47 | spin_lock(&proto_tab_lock); | ||
48 | pp = proto_tab[protocol]; | ||
49 | if (pp && !try_module_get(pp->prot->owner)) | ||
50 | pp = NULL; | ||
51 | spin_unlock(&proto_tab_lock); | ||
52 | |||
53 | return pp; | ||
54 | } | ||
55 | |||
56 | static inline void phonet_proto_put(struct phonet_protocol *pp) | ||
57 | { | ||
58 | module_put(pp->prot->owner); | ||
59 | } | ||
39 | 60 | ||
40 | /* protocol family functions */ | 61 | /* protocol family functions */ |
41 | 62 | ||
@@ -375,10 +396,6 @@ static struct packet_type phonet_packet_type = { | |||
375 | .func = phonet_rcv, | 396 | .func = phonet_rcv, |
376 | }; | 397 | }; |
377 | 398 | ||
378 | /* Transport protocol registration */ | ||
379 | static struct phonet_protocol *proto_tab[PHONET_NPROTO] __read_mostly; | ||
380 | static DEFINE_SPINLOCK(proto_tab_lock); | ||
381 | |||
382 | int __init_or_module phonet_proto_register(int protocol, | 399 | int __init_or_module phonet_proto_register(int protocol, |
383 | struct phonet_protocol *pp) | 400 | struct phonet_protocol *pp) |
384 | { | 401 | { |
@@ -412,27 +429,6 @@ void phonet_proto_unregister(int protocol, struct phonet_protocol *pp) | |||
412 | } | 429 | } |
413 | EXPORT_SYMBOL(phonet_proto_unregister); | 430 | EXPORT_SYMBOL(phonet_proto_unregister); |
414 | 431 | ||
415 | static struct phonet_protocol *phonet_proto_get(int protocol) | ||
416 | { | ||
417 | struct phonet_protocol *pp; | ||
418 | |||
419 | if (protocol >= PHONET_NPROTO) | ||
420 | return NULL; | ||
421 | |||
422 | spin_lock(&proto_tab_lock); | ||
423 | pp = proto_tab[protocol]; | ||
424 | if (pp && !try_module_get(pp->prot->owner)) | ||
425 | pp = NULL; | ||
426 | spin_unlock(&proto_tab_lock); | ||
427 | |||
428 | return pp; | ||
429 | } | ||
430 | |||
431 | static inline void phonet_proto_put(struct phonet_protocol *pp) | ||
432 | { | ||
433 | module_put(pp->prot->owner); | ||
434 | } | ||
435 | |||
436 | /* Module registration */ | 432 | /* Module registration */ |
437 | static int __init phonet_init(void) | 433 | static int __init phonet_init(void) |
438 | { | 434 | { |
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 93cd30ce6501..cdcd16fcfeda 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -270,6 +270,8 @@ static void dev_watchdog_down(struct net_device *dev) | |||
270 | void netif_carrier_on(struct net_device *dev) | 270 | void netif_carrier_on(struct net_device *dev) |
271 | { | 271 | { |
272 | if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) { | 272 | if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) { |
273 | if (dev->reg_state == NETREG_UNINITIALIZED) | ||
274 | return; | ||
273 | linkwatch_fire_event(dev); | 275 | linkwatch_fire_event(dev); |
274 | if (netif_running(dev)) | 276 | if (netif_running(dev)) |
275 | __netdev_watchdog_up(dev); | 277 | __netdev_watchdog_up(dev); |
@@ -285,8 +287,11 @@ EXPORT_SYMBOL(netif_carrier_on); | |||
285 | */ | 287 | */ |
286 | void netif_carrier_off(struct net_device *dev) | 288 | void netif_carrier_off(struct net_device *dev) |
287 | { | 289 | { |
288 | if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) | 290 | if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) { |
291 | if (dev->reg_state == NETREG_UNINITIALIZED) | ||
292 | return; | ||
289 | linkwatch_fire_event(dev); | 293 | linkwatch_fire_event(dev); |
294 | } | ||
290 | } | 295 | } |
291 | EXPORT_SYMBOL(netif_carrier_off); | 296 | EXPORT_SYMBOL(netif_carrier_off); |
292 | 297 | ||