diff options
Diffstat (limited to 'net/llc')
-rw-r--r-- | net/llc/llc_c_ac.c | 48 |
1 files changed, 10 insertions, 38 deletions
diff --git a/net/llc/llc_c_ac.c b/net/llc/llc_c_ac.c index 9abaecceea68..50c827e13a9f 100644 --- a/net/llc/llc_c_ac.c +++ b/net/llc/llc_c_ac.c | |||
@@ -1326,7 +1326,7 @@ int llc_conn_ac_inc_vs_by_1(struct sock *sk, struct sk_buff *skb) | |||
1326 | return 0; | 1326 | return 0; |
1327 | } | 1327 | } |
1328 | 1328 | ||
1329 | void llc_conn_pf_cycle_tmr_cb(unsigned long timeout_data) | 1329 | static void llc_conn_tmr_common_cb(unsigned long timeout_data, u8 type) |
1330 | { | 1330 | { |
1331 | struct sock *sk = (struct sock *)timeout_data; | 1331 | struct sock *sk = (struct sock *)timeout_data; |
1332 | struct sk_buff *skb = alloc_skb(0, GFP_ATOMIC); | 1332 | struct sk_buff *skb = alloc_skb(0, GFP_ATOMIC); |
@@ -1336,58 +1336,30 @@ void llc_conn_pf_cycle_tmr_cb(unsigned long timeout_data) | |||
1336 | struct llc_conn_state_ev *ev = llc_conn_ev(skb); | 1336 | struct llc_conn_state_ev *ev = llc_conn_ev(skb); |
1337 | 1337 | ||
1338 | skb->sk = sk; | 1338 | skb->sk = sk; |
1339 | ev->type = LLC_CONN_EV_TYPE_P_TMR; | 1339 | ev->type = type; |
1340 | llc_process_tmr_ev(sk, skb); | 1340 | llc_process_tmr_ev(sk, skb); |
1341 | } | 1341 | } |
1342 | bh_unlock_sock(sk); | 1342 | bh_unlock_sock(sk); |
1343 | } | 1343 | } |
1344 | 1344 | ||
1345 | void llc_conn_busy_tmr_cb(unsigned long timeout_data) | 1345 | void llc_conn_pf_cycle_tmr_cb(unsigned long timeout_data) |
1346 | { | 1346 | { |
1347 | struct sock *sk = (struct sock *)timeout_data; | 1347 | llc_conn_tmr_common_cb(timeout_data, LLC_CONN_EV_TYPE_P_TMR); |
1348 | struct sk_buff *skb = alloc_skb(0, GFP_ATOMIC); | 1348 | } |
1349 | |||
1350 | bh_lock_sock(sk); | ||
1351 | if (skb) { | ||
1352 | struct llc_conn_state_ev *ev = llc_conn_ev(skb); | ||
1353 | 1349 | ||
1354 | skb->sk = sk; | 1350 | void llc_conn_busy_tmr_cb(unsigned long timeout_data) |
1355 | ev->type = LLC_CONN_EV_TYPE_BUSY_TMR; | 1351 | { |
1356 | llc_process_tmr_ev(sk, skb); | 1352 | llc_conn_tmr_common_cb(timeout_data, LLC_CONN_EV_TYPE_BUSY_TMR); |
1357 | } | ||
1358 | bh_unlock_sock(sk); | ||
1359 | } | 1353 | } |
1360 | 1354 | ||
1361 | void llc_conn_ack_tmr_cb(unsigned long timeout_data) | 1355 | void llc_conn_ack_tmr_cb(unsigned long timeout_data) |
1362 | { | 1356 | { |
1363 | struct sock* sk = (struct sock *)timeout_data; | 1357 | llc_conn_tmr_common_cb(timeout_data, LLC_CONN_EV_TYPE_ACK_TMR); |
1364 | struct sk_buff *skb = alloc_skb(0, GFP_ATOMIC); | ||
1365 | |||
1366 | bh_lock_sock(sk); | ||
1367 | if (skb) { | ||
1368 | struct llc_conn_state_ev *ev = llc_conn_ev(skb); | ||
1369 | |||
1370 | skb->sk = sk; | ||
1371 | ev->type = LLC_CONN_EV_TYPE_ACK_TMR; | ||
1372 | llc_process_tmr_ev(sk, skb); | ||
1373 | } | ||
1374 | bh_unlock_sock(sk); | ||
1375 | } | 1358 | } |
1376 | 1359 | ||
1377 | void llc_conn_rej_tmr_cb(unsigned long timeout_data) | 1360 | void llc_conn_rej_tmr_cb(unsigned long timeout_data) |
1378 | { | 1361 | { |
1379 | struct sock *sk = (struct sock *)timeout_data; | 1362 | llc_conn_tmr_common_cb(timeout_data, LLC_CONN_EV_TYPE_REJ_TMR); |
1380 | struct sk_buff *skb = alloc_skb(0, GFP_ATOMIC); | ||
1381 | |||
1382 | bh_lock_sock(sk); | ||
1383 | if (skb) { | ||
1384 | struct llc_conn_state_ev *ev = llc_conn_ev(skb); | ||
1385 | |||
1386 | skb->sk = sk; | ||
1387 | ev->type = LLC_CONN_EV_TYPE_REJ_TMR; | ||
1388 | llc_process_tmr_ev(sk, skb); | ||
1389 | } | ||
1390 | bh_unlock_sock(sk); | ||
1391 | } | 1363 | } |
1392 | 1364 | ||
1393 | int llc_conn_ac_rst_vs(struct sock *sk, struct sk_buff *skb) | 1365 | int llc_conn_ac_rst_vs(struct sock *sk, struct sk_buff *skb) |