diff options
author | Frank Blaschka <frank.blaschka@de.ibm.com> | 2007-08-29 05:26:53 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-08-31 06:52:57 -0400 |
commit | cde46035161d677617983177e877c87d89fbb5e1 (patch) | |
tree | ab4c24ac03f2b54f5a3faa9dc46ee85331df479e /drivers/s390/net/qeth_main.c | |
parent | d0a34f98d1da66a5b4e02171854e6c04c9916016 (diff) |
qeth: enforce a rate limit for inbound scatter gather messages
under memory pressure scatter gather mode switching messages must be
rate limited.
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/s390/net/qeth_main.c')
-rw-r--r-- | drivers/s390/net/qeth_main.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index ba10d42a1a56..610d27cfd28b 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c | |||
@@ -2803,13 +2803,16 @@ qeth_queue_input_buffer(struct qeth_card *card, int index) | |||
2803 | if (newcount < count) { | 2803 | if (newcount < count) { |
2804 | /* we are in memory shortage so we switch back to | 2804 | /* we are in memory shortage so we switch back to |
2805 | traditional skb allocation and drop packages */ | 2805 | traditional skb allocation and drop packages */ |
2806 | if (atomic_cmpxchg(&card->force_alloc_skb, 0, 1)) | 2806 | if (!atomic_read(&card->force_alloc_skb) && |
2807 | printk(KERN_WARNING | 2807 | net_ratelimit()) |
2808 | "qeth: switch to alloc skb\n"); | 2808 | PRINT_WARN("Switch to alloc skb\n"); |
2809 | atomic_set(&card->force_alloc_skb, 3); | ||
2809 | count = newcount; | 2810 | count = newcount; |
2810 | } else { | 2811 | } else { |
2811 | if (atomic_cmpxchg(&card->force_alloc_skb, 1, 0)) | 2812 | if ((atomic_read(&card->force_alloc_skb) == 1) && |
2812 | printk(KERN_WARNING "qeth: switch to sg\n"); | 2813 | net_ratelimit()) |
2814 | PRINT_WARN("Switch to sg\n"); | ||
2815 | atomic_add_unless(&card->force_alloc_skb, -1, 0); | ||
2813 | } | 2816 | } |
2814 | 2817 | ||
2815 | /* | 2818 | /* |