sfxge(4): avoid code duplication in SW events definition
Reviewed by: gnn Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D6662
This commit is contained in:
parent
0d7ed8fe5f
commit
e1399ed7a2
|
@ -120,18 +120,15 @@
|
|||
#define SFXGE_MAGIC_DMAQ_LABEL_MASK \
|
||||
((1 << SFXGE_MAGIC_DMAQ_LABEL_WIDTH) - 1)
|
||||
|
||||
#define SFXGE_MAGIC_RX_QFLUSH_DONE \
|
||||
(SFXGE_MAGIC_RESERVED | (1 << SFXGE_MAGIC_DMAQ_LABEL_WIDTH))
|
||||
|
||||
#define SFXGE_MAGIC_RX_QFLUSH_FAILED \
|
||||
(SFXGE_MAGIC_RESERVED | (2 << SFXGE_MAGIC_DMAQ_LABEL_WIDTH))
|
||||
|
||||
#define SFXGE_MAGIC_RX_QREFILL \
|
||||
(SFXGE_MAGIC_RESERVED | (3 << SFXGE_MAGIC_DMAQ_LABEL_WIDTH))
|
||||
|
||||
#define SFXGE_MAGIC_TX_QFLUSH_DONE \
|
||||
(SFXGE_MAGIC_RESERVED | (4 << SFXGE_MAGIC_DMAQ_LABEL_WIDTH))
|
||||
enum sfxge_sw_ev {
|
||||
SFXGE_SW_EV_RX_QFLUSH_DONE = 1,
|
||||
SFXGE_SW_EV_RX_QFLUSH_FAILED,
|
||||
SFXGE_SW_EV_RX_QREFILL,
|
||||
SFXGE_SW_EV_TX_QFLUSH_DONE,
|
||||
};
|
||||
|
||||
#define SFXGE_SW_EV_MAGIC(_sw_ev) \
|
||||
(SFXGE_MAGIC_RESERVED | ((_sw_ev) << SFXGE_MAGIC_DMAQ_LABEL_WIDTH))
|
||||
|
||||
enum sfxge_evq_state {
|
||||
SFXGE_EVQ_UNINITIALIZED = 0,
|
||||
|
|
|
@ -230,7 +230,7 @@ sfxge_ev_rxq_flush_done(void *arg, uint32_t rxq_index)
|
|||
label = 0;
|
||||
KASSERT((label & SFXGE_MAGIC_DMAQ_LABEL_MASK) == label,
|
||||
("(label & SFXGE_MAGIC_DMAQ_LABEL_MASK) != level"));
|
||||
magic = SFXGE_MAGIC_RX_QFLUSH_DONE | label;
|
||||
magic = SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_RX_QFLUSH_DONE) | label;
|
||||
|
||||
KASSERT(evq->init_state == SFXGE_EVQ_STARTED,
|
||||
("evq not started"));
|
||||
|
@ -264,7 +264,7 @@ sfxge_ev_rxq_flush_failed(void *arg, uint32_t rxq_index)
|
|||
label = 0;
|
||||
KASSERT((label & SFXGE_MAGIC_DMAQ_LABEL_MASK) == label,
|
||||
("(label & SFXGE_MAGIC_DMAQ_LABEL_MASK) != label"));
|
||||
magic = SFXGE_MAGIC_RX_QFLUSH_FAILED | label;
|
||||
magic = SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_RX_QFLUSH_FAILED) | label;
|
||||
|
||||
KASSERT(evq->init_state == SFXGE_EVQ_STARTED,
|
||||
("evq not started"));
|
||||
|
@ -355,7 +355,7 @@ sfxge_ev_txq_flush_done(void *arg, uint32_t txq_index)
|
|||
label = txq->type;
|
||||
KASSERT((label & SFXGE_MAGIC_DMAQ_LABEL_MASK) == label,
|
||||
("(label & SFXGE_MAGIC_DMAQ_LABEL_MASK) != label"));
|
||||
magic = SFXGE_MAGIC_TX_QFLUSH_DONE | label;
|
||||
magic = SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_TX_QFLUSH_DONE) | label;
|
||||
|
||||
KASSERT(evq->init_state == SFXGE_EVQ_STARTED,
|
||||
("evq not started"));
|
||||
|
@ -380,19 +380,19 @@ sfxge_ev_software(void *arg, uint16_t magic)
|
|||
magic &= ~SFXGE_MAGIC_DMAQ_LABEL_MASK;
|
||||
|
||||
switch (magic) {
|
||||
case SFXGE_MAGIC_RX_QFLUSH_DONE:
|
||||
case SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_RX_QFLUSH_DONE):
|
||||
sfxge_rx_qflush_done(sfxge_get_rxq_by_label(evq, label));
|
||||
break;
|
||||
|
||||
case SFXGE_MAGIC_RX_QFLUSH_FAILED:
|
||||
case SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_RX_QFLUSH_FAILED):
|
||||
sfxge_rx_qflush_failed(sfxge_get_rxq_by_label(evq, label));
|
||||
break;
|
||||
|
||||
case SFXGE_MAGIC_RX_QREFILL:
|
||||
case SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_RX_QREFILL):
|
||||
sfxge_rx_qrefill(sfxge_get_rxq_by_label(evq, label));
|
||||
break;
|
||||
|
||||
case SFXGE_MAGIC_TX_QFLUSH_DONE: {
|
||||
case SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_TX_QFLUSH_DONE): {
|
||||
struct sfxge_txq *txq = sfxge_get_txq_by_label(evq, label);
|
||||
|
||||
KASSERT(txq != NULL, ("txq == NULL"));
|
||||
|
|
|
@ -185,7 +185,7 @@ sfxge_rx_post_refill(void *arg)
|
|||
label = 0;
|
||||
KASSERT((label & SFXGE_MAGIC_DMAQ_LABEL_MASK) == label,
|
||||
("(label & SFXGE_MAGIC_DMAQ_LABEL_MASK) != level"));
|
||||
magic = SFXGE_MAGIC_RX_QREFILL | label;
|
||||
magic = SFXGE_SW_EV_MAGIC(SFXGE_SW_EV_RX_QREFILL) | label;
|
||||
|
||||
/* This is guaranteed due to the start/stop order of rx and ev */
|
||||
KASSERT(evq->init_state == SFXGE_EVQ_STARTED,
|
||||
|
|
Loading…
Reference in New Issue