aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/link.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 877d94f34814..2c6e1b9e024b 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -807,7 +807,7 @@ void link_prepare_wakeup(struct tipc_link *l)
807 807
808 skb_queue_walk_safe(&l->wakeupq, skb, tmp) { 808 skb_queue_walk_safe(&l->wakeupq, skb, tmp) {
809 imp = TIPC_SKB_CB(skb)->chain_imp; 809 imp = TIPC_SKB_CB(skb)->chain_imp;
810 lim = l->window + l->backlog[imp].limit; 810 lim = l->backlog[imp].limit;
811 pnd[imp] += TIPC_SKB_CB(skb)->chain_sz; 811 pnd[imp] += TIPC_SKB_CB(skb)->chain_sz;
812 if ((pnd[imp] + l->backlog[imp].len) >= lim) 812 if ((pnd[imp] + l->backlog[imp].len) >= lim)
813 break; 813 break;
@@ -873,9 +873,11 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list,
873 struct sk_buff *skb, *_skb, *bskb; 873 struct sk_buff *skb, *_skb, *bskb;
874 874
875 /* Match msg importance against this and all higher backlog limits: */ 875 /* Match msg importance against this and all higher backlog limits: */
876 for (i = imp; i <= TIPC_SYSTEM_IMPORTANCE; i++) { 876 if (!skb_queue_empty(backlogq)) {
877 if (unlikely(l->backlog[i].len >= l->backlog[i].limit)) 877 for (i = imp; i <= TIPC_SYSTEM_IMPORTANCE; i++) {
878 return link_schedule_user(l, list); 878 if (unlikely(l->backlog[i].len >= l->backlog[i].limit))
879 return link_schedule_user(l, list);
880 }
879 } 881 }
880 if (unlikely(msg_size(hdr) > mtu)) { 882 if (unlikely(msg_size(hdr) > mtu)) {
881 skb_queue_purge(list); 883 skb_queue_purge(list);
@@ -1692,10 +1694,10 @@ void tipc_link_set_queue_limits(struct tipc_link *l, u32 win)
1692 int max_bulk = TIPC_MAX_PUBLICATIONS / (l->mtu / ITEM_SIZE); 1694 int max_bulk = TIPC_MAX_PUBLICATIONS / (l->mtu / ITEM_SIZE);
1693 1695
1694 l->window = win; 1696 l->window = win;
1695 l->backlog[TIPC_LOW_IMPORTANCE].limit = win / 2; 1697 l->backlog[TIPC_LOW_IMPORTANCE].limit = max_t(u16, 50, win);
1696 l->backlog[TIPC_MEDIUM_IMPORTANCE].limit = win; 1698 l->backlog[TIPC_MEDIUM_IMPORTANCE].limit = max_t(u16, 100, win * 2);
1697 l->backlog[TIPC_HIGH_IMPORTANCE].limit = win / 2 * 3; 1699 l->backlog[TIPC_HIGH_IMPORTANCE].limit = max_t(u16, 150, win * 3);
1698 l->backlog[TIPC_CRITICAL_IMPORTANCE].limit = win * 2; 1700 l->backlog[TIPC_CRITICAL_IMPORTANCE].limit = max_t(u16, 200, win * 4);
1699 l->backlog[TIPC_SYSTEM_IMPORTANCE].limit = max_bulk; 1701 l->backlog[TIPC_SYSTEM_IMPORTANCE].limit = max_bulk;
1700} 1702}
1701 1703