#ifndef DPAA_ETH_H_
#define DPAA_ETH_H_
struct dpaa_eth_softc {
if_t sc_ifnet;
device_t sc_dev;
struct resource *sc_mem;
struct mtx sc_lock;
int sc_mac_enet_mode;
struct bman_pool *sc_rx_pool;
uint8_t sc_rx_bpid;
uma_zone_t sc_rx_zone;
char sc_rx_zname[64];
struct qman_fq *sc_rx_fq;
uint32_t sc_rx_fqid;
struct qman_fq *sc_tx_fq;
bool sc_tx_fq_full;
struct qman_fq *sc_tx_conf_fq;
uint32_t sc_tx_conf_fqid;
int (*sc_port_rx_init)
(struct dpaa_eth_softc *sc, int unit);
int (*sc_port_tx_init)
(struct dpaa_eth_softc *sc, int unit);
void (*sc_start_locked)
(struct dpaa_eth_softc *sc);
uint8_t sc_eth_id;
uintptr_t sc_mac_mem_offset;
int sc_mac_mdio_irq;
uint8_t sc_mac_addr[6];
int sc_port_rx_hw_id;
int sc_port_tx_hw_id;
uint32_t sc_port_tx_qman_chan;
int sc_phy_addr;
bool sc_hidden;
device_t sc_mdio;
int sc_rev_major;
int sc_rev_minor;
device_t sc_rx_port;
device_t sc_tx_port;
int sc_rx_channel;
struct mii_data *sc_mii;
device_t sc_mii_dev;
struct mtx sc_mii_lock;
struct callout sc_tick_callout;
uma_zone_t sc_fi_zone;
char sc_fi_zname[64];
};
int dpaa_eth_fm_port_rx_init(struct dpaa_eth_softc *sc);
int dpaa_eth_fm_port_tx_init(struct dpaa_eth_softc *sc);
void dpaa_eth_if_start_locked(struct dpaa_eth_softc *sc);
int dpaa_eth_pool_rx_init(struct dpaa_eth_softc *sc);
void dpaa_eth_pool_rx_free(struct dpaa_eth_softc *sc);
int dpaa_eth_fi_pool_init(struct dpaa_eth_softc *sc);
void dpaa_eth_fi_pool_free(struct dpaa_eth_softc *sc);
int dpaa_eth_fq_rx_init(struct dpaa_eth_softc *sc);
int dpaa_eth_fq_tx_init(struct dpaa_eth_softc *sc);
void dpaa_eth_fq_rx_free(struct dpaa_eth_softc *sc);
void dpaa_eth_fq_tx_free(struct dpaa_eth_softc *sc);
#endif