⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmd9118.c

📁 基于pxa270的linux下smsc9118的网卡驱动源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	bestMeasurement=0;

	if(bestParams.PacketCost>20) {

		tempLow=bestParams.PacketCost-20;

	} else {

		tempLow=0;

	}

	tempHigh=bestParams.PacketCost+20;

	for(currentSetting=tempLow;currentSetting<tempHigh;currentSetting++) {

		flowParams.PacketCost=currentSetting;

		if(!SendFlowParams(controlSocket, &flowParams)) {

			printf("Failed to send new setting: PacketCost=%ld\n",currentSetting);

			goto FAILED;

		}

		if(system(command)==0) {

			currentMeasurement=ReadThroughput(outputFile);

			if(currentMeasurement>bestMeasurement) {

				bestMeasurement=currentMeasurement;

				bestParams.PacketCost=currentSetting;

			}

		} else {

			printf("Failed system command: \"%s\"\n",command);

			goto FAILED;

		}

		printf("PacketCost = %ld, Throughput = %ld\n",

			currentSetting,currentMeasurement);

	}

	printf("Best: PacketCost = %ld, Throughput = %ld\n",

		bestParams.PacketCost,bestMeasurement);

	printf("Best ");DisplayFlowParams(&bestParams);

	if(!SendFlowParams(controlSocket, &origParams)) {

		printf("Failed to restore original setting\n");

		goto FAILED;

	}



DONE:

	close(controlSocket);

	return;

FAILED:

	close(controlSocket);

	printf("Something went wrong\n");

}



int main(ac,av)

int ac;

char * av[];

{

	int oc=0;

	bool eSet=false;

	char ethName[IFNAMSIZ];

	COMMAND_DATA commandData;

	bool cSet=false;

	bool aSet=false;

	unsigned long address=0;

	bool dSet=false;

	unsigned long data=0;

	unsigned long commandCode=0;

	char hostName[128];

	bool hSet=false;

	unsigned long portNum=0;

	bool pSet=false;





	iam=av[0];

	ethName[0]=0;

	hostName[0]=0;



	while((oc=getopt(ac,av,"hH:p:e:c:a:d:"))!=-1) {

		switch(oc) {

		case 'h'://help

			goto BAD_USAGE;

		case 'H'://Host address

			if(hSet) goto BAD_USAGE;

			strcpy(hostName,optarg);

			hSet=true;

			break;

		case 'p':

			if(pSet) goto BAD_USAGE;

			if(!ParseNumber(optarg,&portNum)) {

				goto BAD_USAGE;

			}

			if(portNum>0xFFFFUL) goto BAD_USAGE;

			pSet=true;

			break;            

		case 'e':

			if(eSet) goto BAD_USAGE;

			eSet=true;

			strncpy(ethName,optarg,IFNAMSIZ);

			ethName[IFNAMSIZ-1]=0;

			break;

		case 'c':

			if(cSet) goto BAD_USAGE;

			if(strcmp(optarg,"GET_CONFIG")==0) {

				commandCode=COMMAND_GET_CONFIGURATION;

			} else if(strcmp(optarg,"DUMP_REGS")==0) {

				commandCode=COMMAND_DUMP_LAN_REGS;

			} else if(strcmp(optarg,"DUMP_MAC")==0) {

				commandCode=COMMAND_DUMP_MAC_REGS;

			} else if(strcmp(optarg,"DUMP_PHY")==0) {

				commandCode=COMMAND_DUMP_PHY_REGS;

			} else if(strcmp(optarg,"DUMP_EEPROM")==0) {

				commandCode=COMMAND_DUMP_EEPROM;

			} else if(strcmp(optarg,"DUMP_TEMP")==0) {

				commandCode=COMMAND_DUMP_TEMP;

			} else if(strcmp(optarg,"GET_MAC")==0) {

				commandCode=COMMAND_GET_MAC_ADDRESS;

			} else if(strcmp(optarg,"SET_MAC")==0) {

				commandCode=COMMAND_SET_MAC_ADDRESS;

			} else if(strcmp(optarg,"LOAD_MAC")==0) {

				commandCode=COMMAND_LOAD_MAC_ADDRESS;

			} else if(strcmp(optarg,"SAVE_MAC")==0) {

				commandCode=COMMAND_SAVE_MAC_ADDRESS;

			} else if(strcmp(optarg,"SET_DEBUG")==0) {

				commandCode=COMMAND_SET_DEBUG_MODE;

			} else if(strcmp(optarg,"SET_POWER")==0) {

				commandCode=COMMAND_SET_POWER_MODE;

			} else if(strcmp(optarg,"GET_POWER")==0) {

				commandCode=COMMAND_GET_POWER_MODE;

			} else if(strcmp(optarg,"SET_LINK")==0) {

				commandCode=COMMAND_SET_LINK_MODE;

			} else if(strcmp(optarg,"GET_LINK")==0) {

				commandCode=COMMAND_GET_LINK_MODE;

			} else if(strcmp(optarg,"CHECK_LINK")==0) {

				commandCode=COMMAND_CHECK_LINK;

			} else if(strcmp(optarg,"READ_REG")==0) {

				commandCode=COMMAND_LAN_GET_REG;

			} else if(strcmp(optarg,"WRITE_REG")==0) {

				commandCode=COMMAND_LAN_SET_REG;

			} else if(strcmp(optarg,"READ_MAC")==0) {

				commandCode=COMMAND_MAC_GET_REG;

			} else if(strcmp(optarg,"WRITE_MAC")==0) {

				commandCode=COMMAND_MAC_SET_REG;

			} else if(strcmp(optarg,"READ_PHY")==0) {

				commandCode=COMMAND_PHY_GET_REG;

			} else if(strcmp(optarg,"WRITE_PHY")==0) {

				commandCode=COMMAND_PHY_SET_REG;

			} else if(strcmp(optarg,"READ_BYTE")==0) {

				commandCode=COMMAND_READ_BYTE;

			} else if(strcmp(optarg,"READ_WORD")==0) {

				commandCode=COMMAND_READ_WORD;

			} else if(strcmp(optarg,"READ_DWORD")==0) {

				commandCode=COMMAND_READ_DWORD;

			} else if(strcmp(optarg,"WRITE_BYTE")==0) {

				commandCode=COMMAND_WRITE_BYTE;

			} else if(strcmp(optarg,"WRITE_WORD")==0) {

				commandCode=COMMAND_WRITE_WORD;

			} else if(strcmp(optarg,"WRITE_DWORD")==0) {

				commandCode=COMMAND_WRITE_DWORD;

			} else if(strcmp(optarg,"SERVER")==0) {

				commandCode=COMMAND_RUN_SERVER;

			} else if(strcmp(optarg,"TUNER")==0) {

				commandCode=COMMAND_RUN_TUNER;

			} else if(strcmp(optarg,"GET_FLOW")==0) {

				commandCode=COMMAND_GET_FLOW_PARAMS;

			} else {

				goto BAD_USAGE;

			}

			cSet=true;

			break;

		case 'a':

			if(aSet) goto BAD_USAGE;

			if(!ParseNumber(optarg,&address)) {

				goto BAD_USAGE;

			}

			aSet=true;

			break;

		case 'd':

			if(dSet) goto BAD_USAGE;

			if(!ParseNumber(optarg,&data)) {

				goto BAD_USAGE;

			}



			dSet=true;

			break;

		default:

			goto BAD_USAGE;

		}

	}



	if(commandCode==COMMAND_RUN_TUNER) {

		//This command must be run before initialize because

		//  it will typically be run on machines that do not

		//  have the smsc9118 driver installed.

		RunTuner(hostName,(unsigned short)portNum);

		return 1;

	}



	if(!Initialize(&commandData,ethName)) {

		return 1;

	}



	switch(commandCode) {

	case COMMAND_RUN_SERVER:

		RunServer(&commandData,(unsigned short)portNum);

		break;

	case COMMAND_GET_FLOW_PARAMS:

		GetFlowParams(&commandData);

		break;

	case COMMAND_GET_CONFIGURATION:

		GetConfiguration(&commandData);

		break;

	case COMMAND_DUMP_LAN_REGS:

		LanDumpRegs(&commandData);

		break;

	case COMMAND_DUMP_MAC_REGS:

		MacDumpRegs(&commandData);

		break;

	case COMMAND_DUMP_PHY_REGS:

		PhyDumpRegs(&commandData);

		break;

	case COMMAND_DUMP_EEPROM:

		DumpEEPROM(&commandData);

		break;

	case COMMAND_DUMP_TEMP:

		DumpTemp(&commandData);

		break;

	case COMMAND_GET_MAC_ADDRESS:

		GetMacAddress(&commandData);

		break;

	case COMMAND_SET_MAC_ADDRESS:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		SetMacAddress(&commandData,address,data);

		break;

	case COMMAND_LOAD_MAC_ADDRESS:

		LoadMacAddress(&commandData);

		break;

	case COMMAND_SAVE_MAC_ADDRESS:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		SaveMacAddress(&commandData,address,data);

		break;

	case COMMAND_SET_DEBUG_MODE:

		if(!dSet) goto BAD_USAGE;

		SetDebugMode(&commandData,data);

		break;

	case COMMAND_SET_LINK_MODE:

		if(!dSet) goto BAD_USAGE;

		SetLinkMode(&commandData,data);

		break;

	case COMMAND_GET_LINK_MODE:

		GetLinkMode(&commandData);

		break;

	case COMMAND_CHECK_LINK:

		CheckLink(&commandData);

		break;

	case COMMAND_SET_POWER_MODE:

		if(!dSet) goto BAD_USAGE;

		SetPowerMode(&commandData,data);

		break;

	case COMMAND_GET_POWER_MODE:

		GetPowerMode(&commandData);

		break;

	case COMMAND_LAN_GET_REG:

		if(!aSet) goto BAD_USAGE;

		LanGetReg(&commandData,address);

		break;

	case COMMAND_LAN_SET_REG:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		LanSetReg(&commandData,address,data);

		break;

	case COMMAND_MAC_GET_REG:

		if(!aSet) goto BAD_USAGE;

		MacGetReg(&commandData,address);

		break;

	case COMMAND_MAC_SET_REG:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		MacSetReg(&commandData,address,data);

		break;

	case COMMAND_PHY_GET_REG:

		if(!aSet) goto BAD_USAGE;

		PhyGetReg(&commandData,address);

		break;

	case COMMAND_PHY_SET_REG:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		PhySetReg(&commandData,address,data);

		break;

	case COMMAND_READ_BYTE:

		if(!aSet) goto BAD_USAGE;

		ReadByte(&commandData,address);

		break;

	case COMMAND_READ_WORD:

		if(!aSet) goto BAD_USAGE;

		ReadWord(&commandData,address);

		break;

	case COMMAND_READ_DWORD:

		if(!aSet) goto BAD_USAGE;

		ReadDWord(&commandData,address);

		break;

	case COMMAND_WRITE_BYTE:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		WriteByte(&commandData,address,data);

		break;

	case COMMAND_WRITE_WORD:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		WriteWord(&commandData,address,data);

		break;

	case COMMAND_WRITE_DWORD:

		if(!aSet) goto BAD_USAGE;

		if(!dSet) goto BAD_USAGE;

		WriteDWord(&commandData,address,data);

		break;

	default:

		goto BAD_USAGE;

	}



	return 1;

BAD_USAGE:

	DisplayUsage();

	return 1;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -