aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/socket.c
diff options
context:
space:
mode:
authorwangweidong <wangweidong1@huawei.com>2014-01-15 04:24:01 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-15 19:47:48 -0500
commit0ea5e4df7b31bb020df864ff9c77427a5295f0f2 (patch)
tree4c2e81d22a2ce50b27c4a6a95b901963dd96eba8 /net/sctp/socket.c
parentd76ed22b225c02228c643ae336f76e086fdc32f0 (diff)
sctp: create helper function to enable|disable sackdelay
add sctp_spp_sackdelay_{enable|disable} helper function for avoiding code duplication. Signed-off-by: Wang Weidong <wangweidong1@huawei.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/socket.c')
-rw-r--r--net/sctp/socket.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 6b20a15678f6..fd7337ad4c24 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -2527,6 +2527,16 @@ static int sctp_setsockopt_peer_addr_params(struct sock *sk,
2527 return 0; 2527 return 0;
2528} 2528}
2529 2529
2530static inline __u32 sctp_spp_sackdelay_enable(__u32 param_flags)
2531{
2532 return (param_flags & ~SPP_SACKDELAY) | SPP_SACKDELAY_ENABLE;
2533}
2534
2535static inline __u32 sctp_spp_sackdelay_disable(__u32 param_flags)
2536{
2537 return (param_flags & ~SPP_SACKDELAY) | SPP_SACKDELAY_DISABLE;
2538}
2539
2530/* 2540/*
2531 * 7.1.23. Get or set delayed ack timer (SCTP_DELAYED_SACK) 2541 * 7.1.23. Get or set delayed ack timer (SCTP_DELAYED_SACK)
2532 * 2542 *
@@ -2610,37 +2620,31 @@ static int sctp_setsockopt_delayed_ack(struct sock *sk,
2610 asoc->sackdelay = 2620 asoc->sackdelay =
2611 msecs_to_jiffies(params.sack_delay); 2621 msecs_to_jiffies(params.sack_delay);
2612 asoc->param_flags = 2622 asoc->param_flags =
2613 (asoc->param_flags & ~SPP_SACKDELAY) | 2623 sctp_spp_sackdelay_enable(asoc->param_flags);
2614 SPP_SACKDELAY_ENABLE;
2615 } else { 2624 } else {
2616 sp->sackdelay = params.sack_delay; 2625 sp->sackdelay = params.sack_delay;
2617 sp->param_flags = 2626 sp->param_flags =
2618 (sp->param_flags & ~SPP_SACKDELAY) | 2627 sctp_spp_sackdelay_enable(sp->param_flags);
2619 SPP_SACKDELAY_ENABLE;
2620 } 2628 }
2621 } 2629 }
2622 2630
2623 if (params.sack_freq == 1) { 2631 if (params.sack_freq == 1) {
2624 if (asoc) { 2632 if (asoc) {
2625 asoc->param_flags = 2633 asoc->param_flags =
2626 (asoc->param_flags & ~SPP_SACKDELAY) | 2634 sctp_spp_sackdelay_disable(asoc->param_flags);
2627 SPP_SACKDELAY_DISABLE;
2628 } else { 2635 } else {
2629 sp->param_flags = 2636 sp->param_flags =
2630 (sp->param_flags & ~SPP_SACKDELAY) | 2637 sctp_spp_sackdelay_disable(sp->param_flags);
2631 SPP_SACKDELAY_DISABLE;
2632 } 2638 }
2633 } else if (params.sack_freq > 1) { 2639 } else if (params.sack_freq > 1) {
2634 if (asoc) { 2640 if (asoc) {
2635 asoc->sackfreq = params.sack_freq; 2641 asoc->sackfreq = params.sack_freq;
2636 asoc->param_flags = 2642 asoc->param_flags =
2637 (asoc->param_flags & ~SPP_SACKDELAY) | 2643 sctp_spp_sackdelay_enable(asoc->param_flags);
2638 SPP_SACKDELAY_ENABLE;
2639 } else { 2644 } else {
2640 sp->sackfreq = params.sack_freq; 2645 sp->sackfreq = params.sack_freq;
2641 sp->param_flags = 2646 sp->param_flags =
2642 (sp->param_flags & ~SPP_SACKDELAY) | 2647 sctp_spp_sackdelay_enable(sp->param_flags);
2643 SPP_SACKDELAY_ENABLE;
2644 } 2648 }
2645 } 2649 }
2646 2650
@@ -2652,18 +2656,15 @@ static int sctp_setsockopt_delayed_ack(struct sock *sk,
2652 trans->sackdelay = 2656 trans->sackdelay =
2653 msecs_to_jiffies(params.sack_delay); 2657 msecs_to_jiffies(params.sack_delay);
2654 trans->param_flags = 2658 trans->param_flags =
2655 (trans->param_flags & ~SPP_SACKDELAY) | 2659 sctp_spp_sackdelay_enable(trans->param_flags);
2656 SPP_SACKDELAY_ENABLE;
2657 } 2660 }
2658 if (params.sack_freq == 1) { 2661 if (params.sack_freq == 1) {
2659 trans->param_flags = 2662 trans->param_flags =
2660 (trans->param_flags & ~SPP_SACKDELAY) | 2663 sctp_spp_sackdelay_disable(trans->param_flags);
2661 SPP_SACKDELAY_DISABLE;
2662 } else if (params.sack_freq > 1) { 2664 } else if (params.sack_freq > 1) {
2663 trans->sackfreq = params.sack_freq; 2665 trans->sackfreq = params.sack_freq;
2664 trans->param_flags = 2666 trans->param_flags =
2665 (trans->param_flags & ~SPP_SACKDELAY) | 2667 sctp_spp_sackdelay_enable(trans->param_flags);
2666 SPP_SACKDELAY_ENABLE;
2667 } 2668 }
2668 } 2669 }
2669 } 2670 }