diff options
author | wangweidong <wangweidong1@huawei.com> | 2014-01-15 04:24:01 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-01-15 19:47:48 -0500 |
commit | 0ea5e4df7b31bb020df864ff9c77427a5295f0f2 (patch) | |
tree | 4c2e81d22a2ce50b27c4a6a95b901963dd96eba8 /net/sctp/socket.c | |
parent | d76ed22b225c02228c643ae336f76e086fdc32f0 (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.c | 37 |
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 | ||
2530 | static inline __u32 sctp_spp_sackdelay_enable(__u32 param_flags) | ||
2531 | { | ||
2532 | return (param_flags & ~SPP_SACKDELAY) | SPP_SACKDELAY_ENABLE; | ||
2533 | } | ||
2534 | |||
2535 | static 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 | } |