/* * Copyright (c) 2021-2021 Huawei Device Co., Ltd. * * HDF is dual licensed: you can use it either under the terms of * the GPL, or the BSD license, at your option. * See the LICENSE file in the root of this repository for complete details. */ #ifndef ETH_CHIP_DRIVER_H #define ETH_CHIP_DRIVER_H #include "eth_device.h" #include "net_device.h" #ifdef __cplusplus extern "C" { #endif #define MAX_CHIPDRIVER_COUNT 16 struct EthMacOps { void (*MacInit)(void); int32_t (*PortReset)(struct EthDevice *ethDevice); int32_t (*PortInit)(struct EthDevice *ethDevice); }; struct HdfEthMacChipDriver { struct EthMacOps *ethMacOps; /**< Ethernet Mac some basic methods */ }; struct HdfEthNetDeviceData { struct HdfEthMacChipDriver *macChipDriver; /**< Mac ChipDriver */ }; struct HdfEthNetDeviceData *GetEthNetDeviceData(const struct NetDevice *netDev); struct HdfEthChipDriverFactory { const char *driverName; int32_t (*InitEthDriver)(struct EthDevice *ethDevice); int32_t (*DeinitEthDriver)(struct EthDevice *ethDevice); struct HdfEthMacChipDriver *(*BuildMacDriver)(void); void (*ReleaseMacDriver)(struct HdfEthMacChipDriver *chipDriver); void (*GetMacAddr)(unsigned char *addr, int len); }; struct HdfEthChipDriverManager { struct HdfEthChipDriverFactory **chipFactoryInsts; int32_t (*RegChipDriver)(struct HdfEthChipDriverFactory *factoryInst); struct HdfEthChipDriverFactory *(*GetEthChipDriverByName)(const char *name); }; struct HdfEthChipDriverManager *HdfEthGetChipDriverMgr(void); #ifdef __cplusplus } #endif #endif /* ETH_CHIP_DRIVER_H */