decl_lck_mtx_data(, ifcq_lock);
struct ifnet *ifcq_ifp; /* back pointer to interface */
- u_int32_t ifcq_len;
+ u_int32_t ifcq_len; /* packet count */
u_int32_t ifcq_maxlen;
struct pktcntr ifcq_xmitcnt;
struct pktcntr ifcq_dropcnt;
u_int32_t ifcq_flags; /* flags */
u_int32_t ifcq_sflags; /* scheduler flags */
u_int32_t ifcq_target_qdelay; /* target queue delay */
+ u_int32_t ifcq_bytes; /* bytes count */
void *ifcq_disc; /* for scheduler-specific use */
/*
* ifcq_disc_slots[] represents the leaf classes configured for the
#define IFCQ_MAXLEN(_ifcq) ((_ifcq)->ifcq_maxlen)
#define IFCQ_SET_MAXLEN(_ifcq, _len) ((_ifcq)->ifcq_maxlen = (_len))
#define IFCQ_TARGET_QDELAY(_ifcq) ((_ifcq)->ifcq_target_qdelay)
+#define IFCQ_BYTES(_ifcq) ((_ifcq)->ifcq_bytes)
+#define IFCQ_INC_BYTES(_ifcq, _len) (IFCQ_BYTES(_ifcq) + _len)
+#define IFCQ_DEC_BYTES(_ifcq, _len) (IFCQ_BYTES(_ifcq) - _len)
#define IFCQ_XMIT_ADD(_ifcq, _pkt, _len) do { \
PKTCNTR_ADD(&(_ifcq)->ifcq_xmitcnt, _pkt, _len); \