summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2016-04-12 14:33:27 +0000
committermpi <mpi@openbsd.org>2016-04-12 14:33:27 +0000
commit67de757d19a93c1124c6c3f80bb70990bbeba2ec (patch)
tree703290c55a112734402312a8eb0ff2d12ebda718 /sys
parentdocuments "route" promise (diff)
downloadwireguard-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.c6
-rw-r--r--sys/net80211/ieee80211_node.c4
-rw-r--r--sys/net80211/ieee80211_output.c4
-rw-r--r--sys/net80211/ieee80211_pae_output.c16
-rw-r--r--sys/net80211/ieee80211_proto.c4
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;