aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Blaschka <frank.blaschka@de.ibm.com>2007-08-29 05:26:53 -0400
committerJeff Garzik <jeff@garzik.org>2007-08-31 06:52:57 -0400
commitcde46035161d677617983177e877c87d89fbb5e1 (patch)
treeab4c24ac03f2b54f5a3faa9dc46ee85331df479e
parentd0a34f98d1da66a5b4e02171854e6c04c9916016 (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>
-rw-r--r--drivers/s390/net/qeth_main.c13
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 /*