MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / FIXNetwork

Function FIXNetwork

rEFIt_UEFI/Platform/FixBiosDsdt.cpp:2951–3140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2949//Network -------------------------------------------------------------
2950
2951UINT32 FIXNetwork (UINT8 *dsdt, UINT32 len, UINT32 card)
2952{
2953 UINT32 i, k;
2954 UINT32 NetworkADR = 0, BridgeSize, Size, BrdADR = 0;
2955 UINT32 PCIADR, PCISIZE = 0;
2956 INT32 sizeoffset;
2957 AML_CHUNK *met, *met2;
2958 AML_CHUNK *brd;
2959 AML_CHUNK *root;
2960 AML_CHUNK *pack;
2961 AML_CHUNK *dev;
2962 CHAR8 *network;
2963 UINT32 FakeID = 0;
2964 UINT32 FakeVen = 0;
2965 CHAR8 NameCard[32];
2966
2967 if (!NetworkADR1[card]) return len;
2968 DBG("Start NetWork %d Fix\n", card);
2969
2970 if (gSettings.FakeLAN) {
2971 FakeID = gSettings.FakeLAN >> 16;
2972 FakeVen = gSettings.FakeLAN & 0xFFFF;
2973 snprintf(NameCard, 32, "pci%x,%x", FakeVen, FakeID);
2974 Netmodel[card] = get_net_model((FakeVen << 16) + FakeID);
2975 }
2976
2977 PCIADR = GetPciDevice(dsdt, len);
2978 if (PCIADR) {
2979 PCISIZE = get_size(dsdt, PCIADR);
2980 }
2981 if (!PCISIZE) return len; //what is the bad DSDT ?!
2982 NetworkName = FALSE;
2983 // Network Address
2984 for (i = 0x24; len >=10 && i < len - 10; i++) {
2985 if (CmpAdr(dsdt, i, NetworkADR1[card])) { //0x001C0004
2986 BrdADR = devFind(dsdt, i);
2987 if (!BrdADR) {
2988 continue;
2989 }
2990
2991 BridgeSize = get_size(dsdt, BrdADR);
2992 if (!BridgeSize) {
2993 continue;
2994 }
2995 if (NetworkADR2[card] != 0xFFFE){ //0
2996 for (k = BrdADR + 9; k < BrdADR + BridgeSize; k++) {
2997 if (CmpAdr(dsdt, k, NetworkADR2[card])) {
2998 NetworkADR = devFind(dsdt, k);
2999 if (!NetworkADR) {
3000 continue;
3001 }
3002
3003 device_name[1] = (__typeof_am__(device_name[1]))AllocateZeroPool(5);
3004 CopyMem(device_name[1], dsdt+k, 4);
3005 DBG("found NetWork device [0x%08X:%X] at %X and Name is %s\n",
3006 NetworkADR1[card], NetworkADR2[card], NetworkADR, device_name[1]);
3007 //renaming disabled until better way will found
3008 // ReplaceName(dsdt + BrdADR, BridgeSize, device_name[1], "GIGE");

Callers 1

FixBiosDsdtFunction · 0.85

Calls 15

snprintfFunction · 0.85
get_net_modelFunction · 0.85
GetPciDeviceFunction · 0.85
get_sizeFunction · 0.85
CmpAdrFunction · 0.85
devFindFunction · 0.85
FindMethodFunction · 0.85
move_dataFunction · 0.85
CorrectOutersFunction · 0.85
aml_create_nodeFunction · 0.85
aml_add_deviceFunction · 0.85
aml_add_nameFunction · 0.85

Tested by

no test coverage detected