From b21c21055d40c2d4ec53979ad9d78a44eba92174 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Tue, 4 Jun 2013 17:36:44 +0800 Subject: [PATCH] ifsubque: Cut ties with ifqueue --- sys/net/altq/altq_cbq.c | 6 ++-- sys/net/altq/altq_fairq.c | 8 +++--- sys/net/altq/altq_hfsc.c | 8 +++--- sys/net/altq/altq_priq.c | 6 ++-- sys/net/altq/altq_subr.c | 4 +-- sys/net/altq/if_altq.h | 8 +++--- sys/net/if.c | 28 +++++++++---------- sys/net/ifq_var.h | 12 ++++---- sys/netproto/802_11/ieee80211_dragonfly.h | 10 +++---- .../802_11/wlan/ieee80211_dragonfly.c | 8 +++--- 10 files changed, 48 insertions(+), 50 deletions(-) diff --git a/sys/net/altq/altq_cbq.c b/sys/net/altq/altq_cbq.c index 10e67eb314..cdc41f149e 100644 --- a/sys/net/altq/altq_cbq.c +++ b/sys/net/altq/altq_cbq.c @@ -547,7 +547,7 @@ cbq_enqueue(struct ifaltq_subque *ifsq, struct mbuf *m, /* successfully queued. */ ++cbqp->cbq_qlen; - ++ifsq->ifq_len; + ++ifsq->ifsq_len; crit_exit(); return (0); } @@ -573,7 +573,7 @@ cbq_dequeue(struct ifaltq_subque *ifsq, int op) if (m && op == ALTDQ_REMOVE) { --cbqp->cbq_qlen; /* decrement # of packets in cbq */ - --ifsq->ifq_len; + --ifsq->ifsq_len; /* Update the class. */ rmc_update_class_util(&cbqp->ifnp); @@ -631,7 +631,7 @@ cbq_purge(cbq_state_t *cbqp) rmc_dropall(cl); } if (ifq_is_enabled(cbqp->ifnp.ifq_)) - cbqp->ifnp.ifq_->altq_subq[CBQ_SUBQ_INDEX].ifq_len = 0; + cbqp->ifnp.ifq_->altq_subq[CBQ_SUBQ_INDEX].ifsq_len = 0; } #endif /* ALTQ_CBQ */ diff --git a/sys/net/altq/altq_fairq.c b/sys/net/altq/altq_fairq.c index 02082f970e..b9aa1b2019 100644 --- a/sys/net/altq/altq_fairq.c +++ b/sys/net/altq/altq_fairq.c @@ -355,7 +355,7 @@ fairq_purge(struct fairq_if *pif) fairq_purgeq(cl); } if (ifq_is_enabled(pif->pif_ifq)) - pif->pif_ifq->altq_subq[FAIRQ_SUBQ_INDEX].ifq_len = 0; + pif->pif_ifq->altq_subq[FAIRQ_SUBQ_INDEX].ifsq_len = 0; } static struct fairq_class * @@ -575,7 +575,7 @@ fairq_enqueue(struct ifaltq_subque *ifsq, struct mbuf *m, error = ENOBUFS; goto done; } - ifsq->ifq_len++; + ifsq->ifsq_len++; error = 0; done: crit_exit(); @@ -624,7 +624,7 @@ fairq_dequeue(struct ifaltq_subque *ifsq, int op) m = fairq_getq(best_cl, cur_time); pif->pif_poll_cache = NULL; if (m) { - ifsq->ifq_len--; + ifsq->ifsq_len--; PKTCNTR_ADD(&best_cl->cl_xmitcnt, m_pktlen(m)); } } else { @@ -688,7 +688,7 @@ fairq_dequeue(struct ifaltq_subque *ifsq, int op) } else if (best_cl) { m = fairq_getq(best_cl, cur_time); KKASSERT(best_m == m); - ifsq->ifq_len--; + ifsq->ifsq_len--; PKTCNTR_ADD(&best_cl->cl_xmitcnt, m_pktlen(m)); } else { m = NULL; diff --git a/sys/net/altq/altq_hfsc.c b/sys/net/altq/altq_hfsc.c index 2c5ebc50bd..0f1a4dfe01 100644 --- a/sys/net/altq/altq_hfsc.c +++ b/sys/net/altq/altq_hfsc.c @@ -380,7 +380,7 @@ hfsc_purge(struct hfsc_if *hif) hfsc_purgeq(cl); } if (ifq_is_enabled(hif->hif_ifq)) - hif->hif_ifq->altq_subq[HFSC_SUBQ_INDEX].ifq_len = 0; + hif->hif_ifq->altq_subq[HFSC_SUBQ_INDEX].ifsq_len = 0; } struct hfsc_class * @@ -701,7 +701,7 @@ hfsc_enqueue(struct ifaltq_subque *ifsq, struct mbuf *m, crit_exit(); return (ENOBUFS); } - ifsq->ifq_len++; + ifsq->ifsq_len++; cl->cl_hif->hif_packets++; /* successfully queued. */ @@ -819,7 +819,7 @@ hfsc_dequeue(struct ifaltq_subque *ifsq, int op) panic("hfsc_dequeue:"); len = m_pktlen(m); cl->cl_hif->hif_packets--; - ifsq->ifq_len--; + ifsq->ifsq_len--; PKTCNTR_ADD(&cl->cl_stats.xmit_cnt, len); update_vf(cl, len, cur_time); @@ -903,7 +903,7 @@ hfsc_purgeq(struct hfsc_class *cl) PKTCNTR_ADD(&cl->cl_stats.drop_cnt, m_pktlen(m)); m_freem(m); cl->cl_hif->hif_packets--; - cl->cl_hif->hif_ifq->altq_subq[HFSC_SUBQ_INDEX].ifq_len--; + cl->cl_hif->hif_ifq->altq_subq[HFSC_SUBQ_INDEX].ifsq_len--; } KKASSERT(qlen(cl->cl_q) == 0); diff --git a/sys/net/altq/altq_priq.c b/sys/net/altq/altq_priq.c index 5d07083fd5..86a9803781 100644 --- a/sys/net/altq/altq_priq.c +++ b/sys/net/altq/altq_priq.c @@ -294,7 +294,7 @@ priq_purge(struct priq_if *pif) priq_purgeq(cl); } if (ifq_is_enabled(pif->pif_ifq)) - pif->pif_ifq->altq_subq[PRIQ_SUBQ_INDEX].ifq_len = 0; + pif->pif_ifq->altq_subq[PRIQ_SUBQ_INDEX].ifsq_len = 0; } static struct priq_class * @@ -477,7 +477,7 @@ priq_enqueue(struct ifaltq_subque *ifsq, struct mbuf *m, error = ENOBUFS; goto done; } - ifsq->ifq_len++; + ifsq->ifsq_len++; error = 0; done: crit_exit(); @@ -525,7 +525,7 @@ priq_dequeue(struct ifaltq_subque *ifsq, int op) m = priq_getq(cl); if (m != NULL) { - ifsq->ifq_len--; + ifsq->ifsq_len--; if (qempty(cl->cl_q)) cl->cl_period++; PKTCNTR_ADD(&cl->cl_xmitcnt, m_pktlen(m)); diff --git a/sys/net/altq/altq_subr.c b/sys/net/altq/altq_subr.c index ec16932879..d0633bc4a7 100644 --- a/sys/net/altq/altq_subr.c +++ b/sys/net/altq/altq_subr.c @@ -257,10 +257,8 @@ tbr_dequeue(struct ifaltq_subque *ifsq, int op) if (ifq_is_enabled(ifq)) m = (*ifsq->ifsq_dequeue)(ifsq, op); - else if (op == ALTDQ_POLL) - IF_POLL(ifsq, m); else - IF_DEQUEUE(ifsq, m); + m = ifsq_classic_dequeue(ifsq, op); if (m != NULL && op == ALTDQ_REMOVE) tbr->tbr_token -= TBR_SCALE(m_pktlen(m)); diff --git a/sys/net/altq/if_altq.h b/sys/net/altq/if_altq.h index 7bdd34bd88..3072402cef 100644 --- a/sys/net/altq/if_altq.h +++ b/sys/net/altq/if_altq.h @@ -68,10 +68,10 @@ struct ifaltq_subque { void *ifsq_hw_priv; /* hw private data */ /* fields compatible with IFQ_ macros */ - struct mbuf *ifq_head; - struct mbuf *ifq_tail; - int ifq_len; - int ifq_maxlen; + struct mbuf *ifsq_head; + struct mbuf *ifsq_tail; + int ifsq_len; + int ifsq_maxlen; ifsq_enqueue_t ifsq_enqueue; ifsq_dequeue_t ifsq_dequeue; diff --git a/sys/net/if.c b/sys/net/if.c index 3d99a2a910..9b7fece0b9 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -209,7 +209,7 @@ ifinit(void *dummy) crit_enter(); TAILQ_FOREACH(ifp, &ifnet, if_link) { if (ifp->if_snd.altq_maxlen == 0) { - if_printf(ifp, "XXX: driver didn't set ifq_maxlen\n"); + if_printf(ifp, "XXX: driver didn't set altq_maxlen\n"); ifq_set_maxlen(&ifp->if_snd, ifqmaxlen); } } @@ -589,7 +589,7 @@ if_attach(struct ifnet *ifp, lwkt_serialize_t serializer) M_DEVBUF, M_WAITOK | M_ZERO); if (ifq->altq_maxlen == 0) { - if_printf(ifp, "driver didn't set ifq_maxlen\n"); + if_printf(ifp, "driver didn't set altq_maxlen\n"); ifq_set_maxlen(ifq, ifqmaxlen); } @@ -602,7 +602,7 @@ if_attach(struct ifnet *ifp, lwkt_serialize_t serializer) ifsq->ifsq_altq = ifq; ifsq->ifsq_ifp = ifp; - ifsq->ifq_maxlen = ifq->altq_maxlen; + ifsq->ifsq_maxlen = ifq->altq_maxlen; ifsq->ifsq_prepended = NULL; ifsq->ifsq_started = 0; ifsq->ifsq_hw_oactive = 0; @@ -2507,17 +2507,17 @@ ifsq_classic_enqueue(struct ifaltq_subque *ifsq, struct mbuf *m, struct altq_pktattr *pa __unused) { M_ASSERTPKTHDR(m); - if (ifsq->ifq_len >= ifsq->ifq_maxlen) { + if (ifsq->ifsq_len >= ifsq->ifsq_maxlen) { m_freem(m); return ENOBUFS; } else { m->m_nextpkt = NULL; - if (ifsq->ifq_tail == NULL) - ifsq->ifq_head = m; + if (ifsq->ifsq_tail == NULL) + ifsq->ifsq_head = m; else - ifsq->ifq_tail->m_nextpkt = m; - ifsq->ifq_tail = m; - ifsq->ifq_len++; + ifsq->ifsq_tail->m_nextpkt = m; + ifsq->ifsq_tail = m; + ifsq->ifsq_len++; return 0; } } @@ -2529,16 +2529,16 @@ ifsq_classic_dequeue(struct ifaltq_subque *ifsq, int op) switch (op) { case ALTDQ_POLL: - m = ifsq->ifq_head; + m = ifsq->ifsq_head; break; case ALTDQ_REMOVE: - m = ifsq->ifq_head; + m = ifsq->ifsq_head; if (m != NULL) { - if ((ifsq->ifq_head = m->m_nextpkt) == NULL) - ifsq->ifq_tail = NULL; + if ((ifsq->ifsq_head = m->m_nextpkt) == NULL) + ifsq->ifsq_tail = NULL; m->m_nextpkt = NULL; - ifsq->ifq_len--; + ifsq->ifsq_len--; } break; diff --git a/sys/net/ifq_var.h b/sys/net/ifq_var.h index b5649d6c9d..144c784500 100644 --- a/sys/net/ifq_var.h +++ b/sys/net/ifq_var.h @@ -182,8 +182,8 @@ ifsq_dequeue(struct ifaltq_subque *_ifsq) if (_ifsq->ifsq_prepended != NULL) { _m = _ifsq->ifsq_prepended; _ifsq->ifsq_prepended = NULL; - KKASSERT(_ifsq->ifq_len > 0); - _ifsq->ifq_len--; + KKASSERT(_ifsq->ifsq_len > 0); + _ifsq->ifsq_len--; ALTQ_SQ_UNLOCK(_ifsq); return _m; } @@ -258,8 +258,8 @@ ifsq_purge_locked(struct ifaltq_subque *_ifsq) if (_ifsq->ifsq_prepended != NULL) { m_freem(_ifsq->ifsq_prepended); _ifsq->ifsq_prepended = NULL; - KKASSERT(_ifsq->ifq_len > 0); - _ifsq->ifq_len--; + KKASSERT(_ifsq->ifsq_len > 0); + _ifsq->ifsq_len--; } #ifdef ALTQ @@ -346,7 +346,7 @@ ifsq_prepend(struct ifaltq_subque *_ifsq, struct mbuf *_m) ALTQ_SQ_LOCK(_ifsq); KASSERT(_ifsq->ifsq_prepended == NULL, ("pending prepended mbuf")); _ifsq->ifsq_prepended = _m; - _ifsq->ifq_len++; + _ifsq->ifsq_len++; ALTQ_SQ_UNLOCK(_ifsq); } @@ -408,7 +408,7 @@ ifq_handoff(struct ifnet *_ifp, struct mbuf *_m, struct altq_pktattr *_pa) static __inline int ifsq_is_empty(const struct ifaltq_subque *_ifsq) { - return(_ifsq->ifq_len == 0); + return(_ifsq->ifsq_len == 0); } /* diff --git a/sys/netproto/802_11/ieee80211_dragonfly.h b/sys/netproto/802_11/ieee80211_dragonfly.h index 9e7f08b711..da63efbe01 100644 --- a/sys/netproto/802_11/ieee80211_dragonfly.h +++ b/sys/netproto/802_11/ieee80211_dragonfly.h @@ -42,11 +42,11 @@ #ifndef IF_PREPEND_LIST #define _IF_PREPEND_LIST(ifq, mhead, mtail, mcount) do { \ - (mtail)->m_nextpkt = (ifq)->ifq_head; \ - if ((ifq)->ifq_tail == NULL) \ - (ifq)->ifq_tail = (mtail); \ - (ifq)->ifq_head = (mhead); \ - (ifq)->ifq_len += (mcount); \ + (mtail)->m_nextpkt = (ifq)->ifsq_head; \ + if ((ifq)->ifsq_tail == NULL) \ + (ifq)->ifsq_tail = (mtail); \ + (ifq)->ifsq_head = (mhead); \ + (ifq)->ifsq_len += (mcount); \ } while (0) #define IF_PREPEND_LIST(ifq, mhead, mtail, mcount) do { \ diff --git a/sys/netproto/802_11/wlan/ieee80211_dragonfly.c b/sys/netproto/802_11/wlan/ieee80211_dragonfly.c index ce13b30df5..e03a630d88 100644 --- a/sys/netproto/802_11/wlan/ieee80211_dragonfly.c +++ b/sys/netproto/802_11/wlan/ieee80211_dragonfly.c @@ -419,12 +419,12 @@ ieee80211_flush_ifq(struct ifaltq *ifq, struct ieee80211vap *vap) ALTQ_SQ_LOCK(ifsq); - mprev = &ifsq->ifq_head; + mprev = &ifsq->ifsq_head; while ((m = *mprev) != NULL) { ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; if (ni != NULL && ni->ni_vap == vap) { *mprev = m->m_nextpkt; /* remove from list */ - ifsq->ifq_len--; + ifsq->ifsq_len--; m_freem(m); ieee80211_free_node(ni); /* reclaim ref */ @@ -432,10 +432,10 @@ ieee80211_flush_ifq(struct ifaltq *ifq, struct ieee80211vap *vap) mprev = &m->m_nextpkt; } /* recalculate tail ptr */ - m = ifsq->ifq_head; + m = ifsq->ifsq_head; for (; m != NULL && m->m_nextpkt != NULL; m = m->m_nextpkt) ; - ifsq->ifq_tail = m; + ifsq->ifsq_tail = m; ALTQ_SQ_UNLOCK(ifsq); } -- 2.41.0