fix some sloppy stuff in wifi that made its savestates unreliable

This commit is contained in:
zeromus 2021-10-25 20:07:51 -04:00
parent fe8c424c4a
commit 43b00fb2a0
2 changed files with 18 additions and 23 deletions

View File

@ -4434,13 +4434,6 @@ void WifiHandler::Reset()
_wifi.io.BSSID[4] = 0xFF; _wifi.io.BSSID[4] = 0xFF;
_wifi.io.BSSID[5] = 0xFF; _wifi.io.BSSID[5] = 0xFF;
_wifi.txPacketInfo[0].txLocation = &_wifi.io.TXBUF_LOC1;
_wifi.txPacketInfo[1].txLocation = &_wifi.io.TXBUF_CMD;
_wifi.txPacketInfo[2].txLocation = &_wifi.io.TXBUF_LOC2;
_wifi.txPacketInfo[3].txLocation = &_wifi.io.TXBUF_LOC3;
_wifi.txPacketInfo[4].txLocation = &_wifi.io.TXBUF_BEACON;
_wifi.txPacketInfo[5].txLocation = &_wifi.io.TXBUF_REPLY2;
this->_didWarnWFCUser = false; this->_didWarnWFCUser = false;
} }

View File

@ -210,7 +210,7 @@ struct slock;
typedef slock slock_t; typedef slock slock_t;
// RF2958 Register Addresses // RF2958 Register Addresses
enum RegAddrRF2958 enum RegAddrRF2958 : s32
{ {
REG_RF2958_CFG1 = 0, REG_RF2958_CFG1 = 0,
REG_RF2958_IPLL1 = 1, REG_RF2958_IPLL1 = 1,
@ -753,7 +753,7 @@ typedef struct
u8 data[105]; u8 data[105];
} bb_t; } bb_t;
enum WifiRFStatus enum WifiRFStatus : s32
{ {
WifiRFStatus0_Initial = 0, WifiRFStatus0_Initial = 0,
WifiRFStatus1_TXComplete = 1, WifiRFStatus1_TXComplete = 1,
@ -767,7 +767,7 @@ enum WifiRFStatus
WifiRFStatus9_Idle = 9 WifiRFStatus9_Idle = 9
}; };
enum WifiIRQ enum WifiIRQ : s32
{ {
WifiIRQ00_RXComplete = 0, WifiIRQ00_RXComplete = 0,
WifiIRQ01_TXComplete = 1, WifiIRQ01_TXComplete = 1,
@ -787,14 +787,14 @@ enum WifiIRQ
WifiIRQ15_TimeslotPreBeacon = 15 WifiIRQ15_TimeslotPreBeacon = 15
}; };
enum EAPStatus enum EAPStatus : s32
{ {
APStatus_Disconnected = 0, APStatus_Disconnected = 0,
APStatus_Authenticated, APStatus_Authenticated,
APStatus_Associated APStatus_Associated
}; };
enum WifiTXLocIndex enum WifiTXLocIndex : s32
{ {
WifiTXLocIndex_LOC1 = 0, WifiTXLocIndex_LOC1 = 0,
WifiTXLocIndex_CMD = 1, WifiTXLocIndex_CMD = 1,
@ -804,7 +804,7 @@ enum WifiTXLocIndex
WifiTXLocIndex_CMDREPLY = 5 WifiTXLocIndex_CMDREPLY = 5
}; };
enum WifiStageID enum WifiStageID : s32
{ {
WifiStageID_PreambleDone = 0, WifiStageID_PreambleDone = 0,
WifiStageID_TransmitDone = 1, WifiStageID_TransmitDone = 1,
@ -813,14 +813,14 @@ enum WifiStageID
WifiStageID_CmdReplyTransferDone = 4 WifiStageID_CmdReplyTransferDone = 4
}; };
enum WifiEmulationLevel enum WifiEmulationLevel : s32
{ {
WifiEmulationLevel_Off = 0, WifiEmulationLevel_Off = 0,
WifiEmulationLevel_Normal = 10000, WifiEmulationLevel_Normal = 10000,
WifiEmulationLevel_Compatibility = 65535 WifiEmulationLevel_Compatibility = 65535
}; };
enum WifiCommInterfaceID enum WifiCommInterfaceID : s32
{ {
WifiCommInterfaceID_AdHoc = 0, WifiCommInterfaceID_AdHoc = 0,
WifiCommInterfaceID_Infrastructure = 1 WifiCommInterfaceID_Infrastructure = 1
@ -2773,9 +2773,11 @@ typedef struct
typedef struct typedef struct
{ {
IOREG_W_TXBUF_LOCATION *txLocation; //do not do this. it will break savestates (pointer sizes may vary, and what sense does it make to save them anyway).
size_t emuPacketLength; //if this is needed later once somebody makes wifi work later, use some integer to ID the packet kind and look up the correct TXBUF from that
size_t remainingBytes; //IOREG_W_TXBUF_LOCATION *txLocation;
u32 emuPacketLength;
u32 remainingBytes;
} TXPacketInfo; } TXPacketInfo;
typedef struct typedef struct
@ -2820,14 +2822,14 @@ typedef struct
} DesmumeFrameHeader; // Should total 16 bytes } DesmumeFrameHeader; // Should total 16 bytes
// IEEE 802.11 Frame Information // IEEE 802.11 Frame Information
enum WifiFrameType enum WifiFrameType : s32
{ {
WifiFrameType_Management = 0, WifiFrameType_Management = 0,
WifiFrameType_Control = 1, WifiFrameType_Control = 1,
WifiFrameType_Data = 2 WifiFrameType_Data = 2
}; };
enum WifiFrameManagementSubtype enum WifiFrameManagementSubtype : s32
{ {
WifiFrameManagementSubtype_AssociationRequest = 0x00, WifiFrameManagementSubtype_AssociationRequest = 0x00,
WifiFrameManagementSubtype_AssociationResponse = 0x01, WifiFrameManagementSubtype_AssociationResponse = 0x01,
@ -2847,7 +2849,7 @@ enum WifiFrameManagementSubtype
WifiFrameManagementSubtype_RESERVED0F = 0x0F WifiFrameManagementSubtype_RESERVED0F = 0x0F
}; };
enum WifiFrameControlSubtype enum WifiFrameControlSubtype : s32
{ {
WifiFrameControlSubtype_RESERVED00 = 0x00, WifiFrameControlSubtype_RESERVED00 = 0x00,
WifiFrameControlSubtype_RESERVED01 = 0x01, WifiFrameControlSubtype_RESERVED01 = 0x01,
@ -2867,7 +2869,7 @@ enum WifiFrameControlSubtype
WifiFrameControlSubtype_EndAck = 0x0F WifiFrameControlSubtype_EndAck = 0x0F
}; };
enum WifiFrameDataSubtype enum WifiFrameDataSubtype : s32
{ {
WifiFrameDataSubtype_Data = 0x00, WifiFrameDataSubtype_Data = 0x00,
WifiFrameDataSubtype_DataAck = 0x01, WifiFrameDataSubtype_DataAck = 0x01,
@ -2887,7 +2889,7 @@ enum WifiFrameDataSubtype
WifiFrameDataSubtype_RESERVED0F = 0x0F WifiFrameDataSubtype_RESERVED0F = 0x0F
}; };
enum WifiFCFromToState enum WifiFCFromToState : s32
{ {
WifiFCFromToState_STA2STA = 0x0, WifiFCFromToState_STA2STA = 0x0,
WifiFCFromToState_STA2DS = 0x1, WifiFCFromToState_STA2DS = 0x1,