diff options
Diffstat (limited to 'net/tipc/link.c')
| -rw-r--r-- | net/tipc/link.c | 89 |
1 files changed, 42 insertions, 47 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c index 511872afa459..910b37e5083d 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c | |||
| @@ -157,13 +157,13 @@ static void link_print(struct link *l_ptr, struct print_buf *buf, | |||
| 157 | } \ | 157 | } \ |
| 158 | } while (0) | 158 | } while (0) |
| 159 | 159 | ||
| 160 | static inline void dbg_print_link(struct link *l_ptr, const char *str) | 160 | static void dbg_print_link(struct link *l_ptr, const char *str) |
| 161 | { | 161 | { |
| 162 | if (DBG_OUTPUT) | 162 | if (DBG_OUTPUT) |
| 163 | link_print(l_ptr, DBG_OUTPUT, str); | 163 | link_print(l_ptr, DBG_OUTPUT, str); |
| 164 | } | 164 | } |
| 165 | 165 | ||
| 166 | static inline void dbg_print_buf_chain(struct sk_buff *root_buf) | 166 | static void dbg_print_buf_chain(struct sk_buff *root_buf) |
| 167 | { | 167 | { |
| 168 | if (DBG_OUTPUT) { | 168 | if (DBG_OUTPUT) { |
| 169 | struct sk_buff *buf = root_buf; | 169 | struct sk_buff *buf = root_buf; |
| @@ -176,50 +176,50 @@ static inline void dbg_print_buf_chain(struct sk_buff *root_buf) | |||
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | /* | 178 | /* |
| 179 | * Simple inlined link routines | 179 | * Simple link routines |
| 180 | */ | 180 | */ |
| 181 | 181 | ||
| 182 | static inline unsigned int align(unsigned int i) | 182 | static unsigned int align(unsigned int i) |
| 183 | { | 183 | { |
| 184 | return (i + 3) & ~3u; | 184 | return (i + 3) & ~3u; |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | static inline int link_working_working(struct link *l_ptr) | 187 | static int link_working_working(struct link *l_ptr) |
| 188 | { | 188 | { |
| 189 | return (l_ptr->state == WORKING_WORKING); | 189 | return (l_ptr->state == WORKING_WORKING); |
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | static inline int link_working_unknown(struct link *l_ptr) | 192 | static int link_working_unknown(struct link *l_ptr) |
| 193 | { | 193 | { |
| 194 | return (l_ptr->state == WORKING_UNKNOWN); | 194 | return (l_ptr->state == WORKING_UNKNOWN); |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | static inline int link_reset_unknown(struct link *l_ptr) | 197 | static int link_reset_unknown(struct link *l_ptr) |
| 198 | { | 198 | { |
| 199 | return (l_ptr->state == RESET_UNKNOWN); | 199 | return (l_ptr->state == RESET_UNKNOWN); |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | static inline int link_reset_reset(struct link *l_ptr) | 202 | static int link_reset_reset(struct link *l_ptr) |
| 203 | { | 203 | { |
| 204 | return (l_ptr->state == RESET_RESET); | 204 | return (l_ptr->state == RESET_RESET); |
| 205 | } | 205 | } |
| 206 | 206 | ||
| 207 | static inline int link_blocked(struct link *l_ptr) | 207 | static int link_blocked(struct link *l_ptr) |
| 208 | { | 208 | { |
| 209 | return (l_ptr->exp_msg_count || l_ptr->blocked); | 209 | return (l_ptr->exp_msg_count || l_ptr->blocked); |
| 210 | } | 210 | } |
| 211 | 211 | ||
| 212 | static inline int link_congested(struct link *l_ptr) | 212 | static int link_congested(struct link *l_ptr) |
| 213 | { | 213 | { |
| 214 | return (l_ptr->out_queue_size >= l_ptr->queue_limit[0]); | 214 | return (l_ptr->out_queue_size >= l_ptr->queue_limit[0]); |
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | static inline u32 link_max_pkt(struct link *l_ptr) | 217 | static u32 link_max_pkt(struct link *l_ptr) |
| 218 | { | 218 | { |
| 219 | return l_ptr->max_pkt; | 219 | return l_ptr->max_pkt; |
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | static inline void link_init_max_pkt(struct link *l_ptr) | 222 | static void link_init_max_pkt(struct link *l_ptr) |
| 223 | { | 223 | { |
| 224 | u32 max_pkt; | 224 | u32 max_pkt; |
| 225 | 225 | ||
| @@ -236,20 +236,20 @@ static inline void link_init_max_pkt(struct link *l_ptr) | |||
| 236 | l_ptr->max_pkt_probes = 0; | 236 | l_ptr->max_pkt_probes = 0; |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | static inline u32 link_next_sent(struct link *l_ptr) | 239 | static u32 link_next_sent(struct link *l_ptr) |
| 240 | { | 240 | { |
| 241 | if (l_ptr->next_out) | 241 | if (l_ptr->next_out) |
| 242 | return msg_seqno(buf_msg(l_ptr->next_out)); | 242 | return msg_seqno(buf_msg(l_ptr->next_out)); |
| 243 | return mod(l_ptr->next_out_no); | 243 | return mod(l_ptr->next_out_no); |
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | static inline u32 link_last_sent(struct link *l_ptr) | 246 | static u32 link_last_sent(struct link *l_ptr) |
| 247 | { | 247 | { |
| 248 | return mod(link_next_sent(l_ptr) - 1); | 248 | return mod(link_next_sent(l_ptr) - 1); |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | /* | 251 | /* |
| 252 | * Simple non-inlined link routines (i.e. referenced outside this file) | 252 | * Simple non-static link routines (i.e. referenced outside this file) |
| 253 | */ | 253 | */ |
| 254 | 254 | ||
| 255 | int tipc_link_is_up(struct link *l_ptr) | 255 | int tipc_link_is_up(struct link *l_ptr) |
| @@ -396,7 +396,7 @@ static void link_timeout(struct link *l_ptr) | |||
| 396 | tipc_node_unlock(l_ptr->owner); | 396 | tipc_node_unlock(l_ptr->owner); |
| 397 | } | 397 | } |
| 398 | 398 | ||
| 399 | static inline void link_set_timer(struct link *l_ptr, u32 time) | 399 | static void link_set_timer(struct link *l_ptr, u32 time) |
| 400 | { | 400 | { |
| 401 | k_start_timer(&l_ptr->timer, time); | 401 | k_start_timer(&l_ptr->timer, time); |
| 402 | } | 402 | } |
| @@ -573,7 +573,7 @@ void tipc_link_wakeup_ports(struct link *l_ptr, int all) | |||
| 573 | if (win <= 0) | 573 | if (win <= 0) |
| 574 | break; | 574 | break; |
| 575 | list_del_init(&p_ptr->wait_list); | 575 | list_del_init(&p_ptr->wait_list); |
| 576 | p_ptr->congested_link = 0; | 576 | p_ptr->congested_link = NULL; |
| 577 | assert(p_ptr->wakeup); | 577 | assert(p_ptr->wakeup); |
| 578 | spin_lock_bh(p_ptr->publ.lock); | 578 | spin_lock_bh(p_ptr->publ.lock); |
| 579 | p_ptr->publ.congested = 0; | 579 | p_ptr->publ.congested = 0; |
| @@ -1004,9 +1004,9 @@ static int link_bundle_buf(struct link *l_ptr, | |||
| 1004 | return 1; | 1004 | return 1; |
| 1005 | } | 1005 | } |
| 1006 | 1006 | ||
| 1007 | static inline void link_add_to_outqueue(struct link *l_ptr, | 1007 | static void link_add_to_outqueue(struct link *l_ptr, |
| 1008 | struct sk_buff *buf, | 1008 | struct sk_buff *buf, |
| 1009 | struct tipc_msg *msg) | 1009 | struct tipc_msg *msg) |
| 1010 | { | 1010 | { |
| 1011 | u32 ack = mod(l_ptr->next_in_no - 1); | 1011 | u32 ack = mod(l_ptr->next_in_no - 1); |
| 1012 | u32 seqno = mod(l_ptr->next_out_no++); | 1012 | u32 seqno = mod(l_ptr->next_out_no++); |
| @@ -1156,8 +1156,8 @@ int tipc_link_send(struct sk_buff *buf, u32 dest, u32 selector) | |||
| 1156 | * Link is locked. Returns user data length. | 1156 | * Link is locked. Returns user data length. |
| 1157 | */ | 1157 | */ |
| 1158 | 1158 | ||
| 1159 | static inline int link_send_buf_fast(struct link *l_ptr, struct sk_buff *buf, | 1159 | static int link_send_buf_fast(struct link *l_ptr, struct sk_buff *buf, |
| 1160 | u32 *used_max_pkt) | 1160 | u32 *used_max_pkt) |
| 1161 | { | 1161 | { |
| 1162 | struct tipc_msg *msg = buf_msg(buf); | 1162 | struct tipc_msg *msg = buf_msg(buf); |
| 1163 | int res = msg_data_sz(msg); | 1163 | int res = msg_data_sz(msg); |
| @@ -1355,7 +1355,7 @@ again: | |||
| 1355 | fragm_crs = 0; | 1355 | fragm_crs = 0; |
| 1356 | fragm_rest = 0; | 1356 | fragm_rest = 0; |
| 1357 | sect_rest = 0; | 1357 | sect_rest = 0; |
| 1358 | sect_crs = 0; | 1358 | sect_crs = NULL; |
| 1359 | curr_sect = -1; | 1359 | curr_sect = -1; |
| 1360 | 1360 | ||
| 1361 | /* Prepare reusable fragment header: */ | 1361 | /* Prepare reusable fragment header: */ |
| @@ -1549,7 +1549,7 @@ u32 tipc_link_push_packet(struct link *l_ptr) | |||
| 1549 | msg_dbg(buf_msg(buf), ">DEF-PROT>"); | 1549 | msg_dbg(buf_msg(buf), ">DEF-PROT>"); |
| 1550 | l_ptr->unacked_window = 0; | 1550 | l_ptr->unacked_window = 0; |
| 1551 | buf_discard(buf); | 1551 | buf_discard(buf); |
| 1552 | l_ptr->proto_msg_queue = 0; | 1552 | l_ptr->proto_msg_queue = NULL; |
| 1553 | return TIPC_OK; | 1553 | return TIPC_OK; |
| 1554 | } else { | 1554 | } else { |
| 1555 | msg_dbg(buf_msg(buf), "|>DEF-PROT>"); | 1555 | msg_dbg(buf_msg(buf), "|>DEF-PROT>"); |
| @@ -1860,7 +1860,7 @@ u32 tipc_link_defer_pkt(struct sk_buff **head, | |||
| 1860 | struct sk_buff **tail, | 1860 | struct sk_buff **tail, |
| 1861 | struct sk_buff *buf) | 1861 | struct sk_buff *buf) |
| 1862 | { | 1862 | { |
| 1863 | struct sk_buff *prev = 0; | 1863 | struct sk_buff *prev = NULL; |
| 1864 | struct sk_buff *crs = *head; | 1864 | struct sk_buff *crs = *head; |
| 1865 | u32 seq_no = msg_seqno(buf_msg(buf)); | 1865 | u32 seq_no = msg_seqno(buf_msg(buf)); |
| 1866 | 1866 | ||
| @@ -1953,7 +1953,7 @@ static void link_handle_out_of_seq_msg(struct link *l_ptr, | |||
| 1953 | void tipc_link_send_proto_msg(struct link *l_ptr, u32 msg_typ, int probe_msg, | 1953 | void tipc_link_send_proto_msg(struct link *l_ptr, u32 msg_typ, int probe_msg, |
| 1954 | u32 gap, u32 tolerance, u32 priority, u32 ack_mtu) | 1954 | u32 gap, u32 tolerance, u32 priority, u32 ack_mtu) |
| 1955 | { | 1955 | { |
| 1956 | struct sk_buff *buf = 0; | 1956 | struct sk_buff *buf = NULL; |
| 1957 | struct tipc_msg *msg = l_ptr->pmsg; | 1957 | struct tipc_msg *msg = l_ptr->pmsg; |
| 1958 | u32 msg_size = sizeof(l_ptr->proto_msg); | 1958 | u32 msg_size = sizeof(l_ptr->proto_msg); |
| 1959 | 1959 | ||
| @@ -2426,7 +2426,7 @@ static int link_recv_changeover_msg(struct link **l_ptr, | |||
| 2426 | } | 2426 | } |
| 2427 | } | 2427 | } |
| 2428 | exit: | 2428 | exit: |
| 2429 | *buf = 0; | 2429 | *buf = NULL; |
| 2430 | buf_discard(tunnel_buf); | 2430 | buf_discard(tunnel_buf); |
| 2431 | return 0; | 2431 | return 0; |
| 2432 | } | 2432 | } |
| @@ -2539,42 +2539,37 @@ exit: | |||
| 2539 | * pending message. This makes dynamic memory allocation unecessary. | 2539 | * pending message. This makes dynamic memory allocation unecessary. |
| 2540 | */ | 2540 | */ |
| 2541 | 2541 | ||
| 2542 | static inline u32 get_long_msg_seqno(struct sk_buff *buf) | 2542 | static void set_long_msg_seqno(struct sk_buff *buf, u32 seqno) |
| 2543 | { | ||
| 2544 | return msg_seqno(buf_msg(buf)); | ||
| 2545 | } | ||
| 2546 | |||
| 2547 | static inline void set_long_msg_seqno(struct sk_buff *buf, u32 seqno) | ||
| 2548 | { | 2543 | { |
| 2549 | msg_set_seqno(buf_msg(buf), seqno); | 2544 | msg_set_seqno(buf_msg(buf), seqno); |
| 2550 | } | 2545 | } |
| 2551 | 2546 | ||
| 2552 | static inline u32 get_fragm_size(struct sk_buff *buf) | 2547 | static u32 get_fragm_size(struct sk_buff *buf) |
| 2553 | { | 2548 | { |
| 2554 | return msg_ack(buf_msg(buf)); | 2549 | return msg_ack(buf_msg(buf)); |
| 2555 | } | 2550 | } |
| 2556 | 2551 | ||
| 2557 | static inline void set_fragm_size(struct sk_buff *buf, u32 sz) | 2552 | static void set_fragm_size(struct sk_buff *buf, u32 sz) |
| 2558 | { | 2553 | { |
| 2559 | msg_set_ack(buf_msg(buf), sz); | 2554 | msg_set_ack(buf_msg(buf), sz); |
| 2560 | } | 2555 | } |
| 2561 | 2556 | ||
| 2562 | static inline u32 get_expected_frags(struct sk_buff *buf) | 2557 | static u32 get_expected_frags(struct sk_buff *buf) |
| 2563 | { | 2558 | { |
| 2564 | return msg_bcast_ack(buf_msg(buf)); | 2559 | return msg_bcast_ack(buf_msg(buf)); |
| 2565 | } | 2560 | } |
| 2566 | 2561 | ||
| 2567 | static inline void set_expected_frags(struct sk_buff *buf, u32 exp) | 2562 | static void set_expected_frags(struct sk_buff *buf, u32 exp) |
| 2568 | { | 2563 | { |
| 2569 | msg_set_bcast_ack(buf_msg(buf), exp); | 2564 | msg_set_bcast_ack(buf_msg(buf), exp); |
| 2570 | } | 2565 | } |
| 2571 | 2566 | ||
| 2572 | static inline u32 get_timer_cnt(struct sk_buff *buf) | 2567 | static u32 get_timer_cnt(struct sk_buff *buf) |
| 2573 | { | 2568 | { |
| 2574 | return msg_reroute_cnt(buf_msg(buf)); | 2569 | return msg_reroute_cnt(buf_msg(buf)); |
| 2575 | } | 2570 | } |
| 2576 | 2571 | ||
| 2577 | static inline void incr_timer_cnt(struct sk_buff *buf) | 2572 | static void incr_timer_cnt(struct sk_buff *buf) |
| 2578 | { | 2573 | { |
| 2579 | msg_incr_reroute_cnt(buf_msg(buf)); | 2574 | msg_incr_reroute_cnt(buf_msg(buf)); |
| 2580 | } | 2575 | } |
| @@ -2586,13 +2581,13 @@ static inline void incr_timer_cnt(struct sk_buff *buf) | |||
| 2586 | int tipc_link_recv_fragment(struct sk_buff **pending, struct sk_buff **fb, | 2581 | int tipc_link_recv_fragment(struct sk_buff **pending, struct sk_buff **fb, |
| 2587 | struct tipc_msg **m) | 2582 | struct tipc_msg **m) |
| 2588 | { | 2583 | { |
| 2589 | struct sk_buff *prev = 0; | 2584 | struct sk_buff *prev = NULL; |
| 2590 | struct sk_buff *fbuf = *fb; | 2585 | struct sk_buff *fbuf = *fb; |
| 2591 | struct tipc_msg *fragm = buf_msg(fbuf); | 2586 | struct tipc_msg *fragm = buf_msg(fbuf); |
| 2592 | struct sk_buff *pbuf = *pending; | 2587 | struct sk_buff *pbuf = *pending; |
| 2593 | u32 long_msg_seq_no = msg_long_msgno(fragm); | 2588 | u32 long_msg_seq_no = msg_long_msgno(fragm); |
| 2594 | 2589 | ||
| 2595 | *fb = 0; | 2590 | *fb = NULL; |
| 2596 | msg_dbg(fragm,"FRG<REC<"); | 2591 | msg_dbg(fragm,"FRG<REC<"); |
| 2597 | 2592 | ||
| 2598 | /* Is there an incomplete message waiting for this fragment? */ | 2593 | /* Is there an incomplete message waiting for this fragment? */ |
| @@ -2670,8 +2665,8 @@ int tipc_link_recv_fragment(struct sk_buff **pending, struct sk_buff **fb, | |||
| 2670 | 2665 | ||
| 2671 | static void link_check_defragm_bufs(struct link *l_ptr) | 2666 | static void link_check_defragm_bufs(struct link *l_ptr) |
| 2672 | { | 2667 | { |
| 2673 | struct sk_buff *prev = 0; | 2668 | struct sk_buff *prev = NULL; |
| 2674 | struct sk_buff *next = 0; | 2669 | struct sk_buff *next = NULL; |
| 2675 | struct sk_buff *buf = l_ptr->defragm_buf; | 2670 | struct sk_buff *buf = l_ptr->defragm_buf; |
| 2676 | 2671 | ||
| 2677 | if (!buf) | 2672 | if (!buf) |
| @@ -2750,19 +2745,19 @@ static struct link *link_find_link(const char *name, struct node **node) | |||
| 2750 | struct link *l_ptr; | 2745 | struct link *l_ptr; |
| 2751 | 2746 | ||
| 2752 | if (!link_name_validate(name, &link_name_parts)) | 2747 | if (!link_name_validate(name, &link_name_parts)) |
| 2753 | return 0; | 2748 | return NULL; |
| 2754 | 2749 | ||
| 2755 | b_ptr = tipc_bearer_find_interface(link_name_parts.if_local); | 2750 | b_ptr = tipc_bearer_find_interface(link_name_parts.if_local); |
| 2756 | if (!b_ptr) | 2751 | if (!b_ptr) |
| 2757 | return 0; | 2752 | return NULL; |
| 2758 | 2753 | ||
| 2759 | *node = tipc_node_find(link_name_parts.addr_peer); | 2754 | *node = tipc_node_find(link_name_parts.addr_peer); |
| 2760 | if (!*node) | 2755 | if (!*node) |
| 2761 | return 0; | 2756 | return NULL; |
| 2762 | 2757 | ||
| 2763 | l_ptr = (*node)->links[b_ptr->identity]; | 2758 | l_ptr = (*node)->links[b_ptr->identity]; |
| 2764 | if (!l_ptr || strcmp(l_ptr->name, name)) | 2759 | if (!l_ptr || strcmp(l_ptr->name, name)) |
| 2765 | return 0; | 2760 | return NULL; |
| 2766 | 2761 | ||
| 2767 | return l_ptr; | 2762 | return l_ptr; |
| 2768 | } | 2763 | } |
