diff options
author | 2016-04-12 14:33:27 +0000 | |
---|---|---|
committer | 2016-04-12 14:33:27 +0000 | |
commit | 67de757d19a93c1124c6c3f80bb70990bbeba2ec (patch) | |
tree | 703290c55a112734402312a8eb0ff2d12ebda718 /sys | |
parent | documents "route" promise (diff) | |
download | wireguard-openbsd-67de757d19a93c1124c6c3f80bb70990bbeba2ec.tar.xz wireguard-openbsd-67de757d19a93c1124c6c3f80bb70990bbeba2ec.zip |
Call if_enqueue() and if_start() instead of dereferencing the ifp
pointers.
These functions have been introduced to abstract some of the MP-
safeness^Wmadness and should be use everywhere.
Prodded by a comment from jsg@.
ok mikeb@, stsp@
Diffstat (limited to 'sys')
-rw-r--r-- | sys/net80211/ieee80211_input.c | 6 | ||||
-rw-r--r-- | sys/net80211/ieee80211_node.c | 4 | ||||
-rw-r--r-- | sys/net80211/ieee80211_output.c | 4 | ||||
-rw-r--r-- | sys/net80211/ieee80211_pae_output.c | 16 | ||||
-rw-r--r-- | sys/net80211/ieee80211_proto.c | 4 |
5 files changed, 12 insertions, 22 deletions
diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c index b42a22a7c43..e8cb07ad1df 100644 --- a/sys/net80211/ieee80211_input.c +++ b/sys/net80211/ieee80211_input.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_input.c,v 1.169 2016/03/22 11:37:35 dlg Exp $ */ +/* $OpenBSD: ieee80211_input.c,v 1.170 2016/04/12 14:33:27 mpi Exp $ */ /*- * Copyright (c) 2001 Atsushi Onoe @@ -360,7 +360,7 @@ ieee80211_input(struct ifnet *ifp, struct mbuf *m, struct ieee80211_node *ni, /* dequeue buffered unicast frames */ while ((m = mq_dequeue(&ni->ni_savedq)) != NULL) { mq_enqueue(&ic->ic_pwrsaveq, m); - (*ifp->if_start)(ifp); + if_start(ifp); } } } @@ -2870,7 +2870,7 @@ ieee80211_recv_pspoll(struct ieee80211com *ic, struct mbuf *m, wh->i_fc[1] |= IEEE80211_FC1_MORE_DATA; } mq_enqueue(&ic->ic_pwrsaveq, m); - (*ifp->if_start)(ifp); + if_start(ifp); } #endif /* IEEE80211_STA_ONLY */ diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index f15f90d2313..a7fcb4bd632 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_node.c,v 1.100 2016/03/03 07:20:45 gerhard Exp $ */ +/* $OpenBSD: ieee80211_node.c,v 1.101 2016/04/12 14:33:27 mpi Exp $ */ /* $NetBSD: ieee80211_node.c,v 1.14 2004/05/09 09:18:47 dyoung Exp $ */ /*- @@ -1847,7 +1847,7 @@ ieee80211_notify_dtim(struct ieee80211com *ic) wh->i_fc[1] |= IEEE80211_FC1_MORE_DATA; } mq_enqueue(&ic->ic_pwrsaveq, m); - (*ifp->if_start)(ifp); + if_start(ifp); } /* XXX assumes everything has been sent */ ic->ic_tim_mcast_pending = 0; diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c index 7659106ee76..1107e221f16 100644 --- a/sys/net80211/ieee80211_output.c +++ b/sys/net80211/ieee80211_output.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_output.c,v 1.110 2016/02/05 19:11:31 stsp Exp $ */ +/* $OpenBSD: ieee80211_output.c,v 1.111 2016/04/12 14:33:27 mpi Exp $ */ /* $NetBSD: ieee80211_output.c,v 1.13 2004/05/31 11:02:55 dyoung Exp $ */ /*- @@ -241,7 +241,7 @@ ieee80211_mgmt_output(struct ifnet *ifp, struct ieee80211_node *ni, #endif mq_enqueue(&ic->ic_mgtq, m); ifp->if_timer = 1; - (*ifp->if_start)(ifp); + if_start(ifp); return 0; } diff --git a/sys/net80211/ieee80211_pae_output.c b/sys/net80211/ieee80211_pae_output.c index ee67d54e643..32876490c7a 100644 --- a/sys/net80211/ieee80211_pae_output.c +++ b/sys/net80211/ieee80211_pae_output.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_pae_output.c,v 1.26 2015/11/25 03:10:00 dlg Exp $ */ +/* $OpenBSD: ieee80211_pae_output.c,v 1.27 2016/04/12 14:33:27 mpi Exp $ */ /*- * Copyright (c) 2007,2008 Damien Bergamini <damien.bergamini@free.fr> @@ -66,7 +66,7 @@ ieee80211_send_eapol_key(struct ieee80211com *ic, struct mbuf *m, struct ether_header *eh; struct ieee80211_eapol_key *key; u_int16_t info; - int s, len, error; + int len; M_PREPEND(m, sizeof(struct ether_header), M_DONTWAIT); if (m == NULL) @@ -118,22 +118,12 @@ ieee80211_send_eapol_key(struct ieee80211com *ic, struct mbuf *m, if (info & EAPOL_KEY_KEYMIC) ieee80211_eapol_key_mic(key, ptk->kck); - len = m->m_pkthdr.len; - s = splnet(); #ifndef IEEE80211_STA_ONLY /* start a 100ms timeout if an answer is expected from supplicant */ if (info & EAPOL_KEY_KEYACK) timeout_add_msec(&ni->ni_eapol_to, 100); #endif - IFQ_ENQUEUE(&ifp->if_snd, m, error); - if (error == 0) { - ifp->if_obytes += len; - if (!ifq_is_oactive(&ifp->if_snd)) - (*ifp->if_start)(ifp); - } - splx(s); - - return error; + return if_enqueue(ifp, m); } #ifndef IEEE80211_STA_ONLY diff --git a/sys/net80211/ieee80211_proto.c b/sys/net80211/ieee80211_proto.c index 2d27eca691c..f0f181a4931 100644 --- a/sys/net80211/ieee80211_proto.c +++ b/sys/net80211/ieee80211_proto.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ieee80211_proto.c,v 1.64 2016/02/08 01:00:47 stsp Exp $ */ +/* $OpenBSD: ieee80211_proto.c,v 1.65 2016/04/12 14:33:27 mpi Exp $ */ /* $NetBSD: ieee80211_proto.c,v 1.8 2004/04/30 23:58:20 dyoung Exp $ */ /*- @@ -1043,7 +1043,7 @@ justcleanup: ieee80211_set_link_state(ic, LINK_STATE_UP); } ic->ic_mgt_timer = 0; - (*ifp->if_start)(ifp); + if_start(ifp); break; } break; |