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 | |
| 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>
| -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 | } |
