Skip to content

Commit 9c343ea

Browse files
TaeheeYooPaolo Abeni
authored andcommitted
amt: remove unnecessary locks
By the previous patch, amt gateway handlers are changed to worked by a single thread. So, most locks for gateway are not needed. So, it removes. Fixes: cbc21dc ("amt: add data plane of amt interface") Signed-off-by: Taehee Yoo <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent 30e22a6 commit 9c343ea

File tree

1 file changed

+5
-27
lines changed

1 file changed

+5
-27
lines changed

drivers/net/amt.c

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -577,8 +577,8 @@ static struct sk_buff *amt_build_igmp_gq(struct amt_dev *amt)
577577
return skb;
578578
}
579579

580-
static void __amt_update_gw_status(struct amt_dev *amt, enum amt_status status,
581-
bool validate)
580+
static void amt_update_gw_status(struct amt_dev *amt, enum amt_status status,
581+
bool validate)
582582
{
583583
if (validate && amt->status >= status)
584584
return;
@@ -600,14 +600,6 @@ static void __amt_update_relay_status(struct amt_tunnel_list *tunnel,
600600
tunnel->status = status;
601601
}
602602

603-
static void amt_update_gw_status(struct amt_dev *amt, enum amt_status status,
604-
bool validate)
605-
{
606-
spin_lock_bh(&amt->lock);
607-
__amt_update_gw_status(amt, status, validate);
608-
spin_unlock_bh(&amt->lock);
609-
}
610-
611603
static void amt_update_relay_status(struct amt_tunnel_list *tunnel,
612604
enum amt_status status, bool validate)
613605
{
@@ -700,9 +692,7 @@ static void amt_send_discovery(struct amt_dev *amt)
700692
if (unlikely(net_xmit_eval(err)))
701693
amt->dev->stats.tx_errors++;
702694

703-
spin_lock_bh(&amt->lock);
704-
__amt_update_gw_status(amt, AMT_STATUS_SENT_DISCOVERY, true);
705-
spin_unlock_bh(&amt->lock);
695+
amt_update_gw_status(amt, AMT_STATUS_SENT_DISCOVERY, true);
706696
out:
707697
rcu_read_unlock();
708698
}
@@ -937,18 +927,14 @@ static void amt_secret_work(struct work_struct *work)
937927

938928
static void amt_event_send_discovery(struct amt_dev *amt)
939929
{
940-
spin_lock_bh(&amt->lock);
941930
if (amt->status > AMT_STATUS_SENT_DISCOVERY)
942931
goto out;
943932
get_random_bytes(&amt->nonce, sizeof(__be32));
944-
spin_unlock_bh(&amt->lock);
945933

946934
amt_send_discovery(amt);
947-
spin_lock_bh(&amt->lock);
948935
out:
949936
mod_delayed_work(amt_wq, &amt->discovery_wq,
950937
msecs_to_jiffies(AMT_DISCOVERY_TIMEOUT));
951-
spin_unlock_bh(&amt->lock);
952938
}
953939

954940
static void amt_discovery_work(struct work_struct *work)
@@ -966,7 +952,6 @@ static void amt_event_send_request(struct amt_dev *amt)
966952
{
967953
u32 exp;
968954

969-
spin_lock_bh(&amt->lock);
970955
if (amt->status < AMT_STATUS_RECEIVED_ADVERTISEMENT)
971956
goto out;
972957

@@ -976,21 +961,18 @@ static void amt_event_send_request(struct amt_dev *amt)
976961
amt->ready4 = false;
977962
amt->ready6 = false;
978963
amt->remote_ip = 0;
979-
__amt_update_gw_status(amt, AMT_STATUS_INIT, false);
964+
amt_update_gw_status(amt, AMT_STATUS_INIT, false);
980965
amt->req_cnt = 0;
981966
goto out;
982967
}
983-
spin_unlock_bh(&amt->lock);
984968

985969
amt_send_request(amt, false);
986970
amt_send_request(amt, true);
987-
spin_lock_bh(&amt->lock);
988-
__amt_update_gw_status(amt, AMT_STATUS_SENT_REQUEST, true);
971+
amt_update_gw_status(amt, AMT_STATUS_SENT_REQUEST, true);
989972
amt->req_cnt++;
990973
out:
991974
exp = min_t(u32, (1 * (1 << amt->req_cnt)), AMT_MAX_REQ_TIMEOUT);
992975
mod_delayed_work(amt_wq, &amt->req_wq, msecs_to_jiffies(exp * 1000));
993-
spin_unlock_bh(&amt->lock);
994976
}
995977

996978
static void amt_req_work(struct work_struct *work)
@@ -2386,12 +2368,10 @@ static bool amt_membership_query_handler(struct amt_dev *amt,
23862368
ihv3 = skb_pull(skb, sizeof(*iph) + AMT_IPHDR_OPTS);
23872369
skb_reset_transport_header(skb);
23882370
skb_push(skb, sizeof(*iph) + AMT_IPHDR_OPTS);
2389-
spin_lock_bh(&amt->lock);
23902371
amt->ready4 = true;
23912372
amt->mac = amtmq->response_mac;
23922373
amt->req_cnt = 0;
23932374
amt->qi = ihv3->qqic;
2394-
spin_unlock_bh(&amt->lock);
23952375
skb->protocol = htons(ETH_P_IP);
23962376
eth->h_proto = htons(ETH_P_IP);
23972377
ip_eth_mc_map(iph->daddr, eth->h_dest);
@@ -2411,12 +2391,10 @@ static bool amt_membership_query_handler(struct amt_dev *amt,
24112391
mld2q = skb_pull(skb, sizeof(*ip6h) + AMT_IP6HDR_OPTS);
24122392
skb_reset_transport_header(skb);
24132393
skb_push(skb, sizeof(*ip6h) + AMT_IP6HDR_OPTS);
2414-
spin_lock_bh(&amt->lock);
24152394
amt->ready6 = true;
24162395
amt->mac = amtmq->response_mac;
24172396
amt->req_cnt = 0;
24182397
amt->qi = mld2q->mld2q_qqic;
2419-
spin_unlock_bh(&amt->lock);
24202398
skb->protocol = htons(ETH_P_IPV6);
24212399
eth->h_proto = htons(ETH_P_IPV6);
24222400
ipv6_eth_mc_map(&ip6h->daddr, eth->h_dest);

0 commit comments

Comments
 (0)