/* ################################################################################ # # r8168 is the Linux device driver released for RealTek RTL8168B/8111B, # RTL8168C/8111C, RTL8168CP/8111CP, RTL8168D/8111D, and RTL8168DP/8111DP, and # RTK8168E/8111E Gigabit Ethernet controllers with PCI-Express interface. # # Copyright(c) 2011 Realtek Semiconductor Corp. All rights reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # this program; if not, see . # # Author: # Realtek NIC software team # No. 2, Innovation Road II, Hsinchu Science Park, Hsinchu 300, Taiwan # ################################################################################ */ /************************************************************************************ * This product is covered by one or more of the following patents: * US5,307,459, US5,434,872, US5,732,094, US6,570,884, US6,115,776, and US6,327,625. ***********************************************************************************/ #define SIOCDEVPRIVATE_RTLASF SIOCDEVPRIVATE #define FUNCTION_ENABLE 1 #define FUNCTION_DISABLE 0 #define ASFCONFIG 0 #define ASFCAPABILITY 1 #define ASFCOMMULEN 0 #define ASFHBPERIOD 0 #define ASFWD16RST 0 #define ASFCAPMASK 0 #define ASFALERTRESND 0 #define ASFLSNRPOLLCYC 0 #define ASFSNRPOLLCYC 0 #define ASFWD8RESET 0 #define ASFRWHEXNUM 0 #define FMW_CAP_MASK 0x0000F867 #define SPC_CMD_MASK 0x1F00 #define SYS_CAP_MASK 0xFF #define DISABLE_MASK 0x00 #define MAX_DATA_LEN 200 #define MAX_STR_LEN 200 #define COMMU_STR_MAX_LEN 23 #define KEY_LEN 20 #define UUID_LEN 16 #define SYSID_LEN 2 #define RW_ONE_BYTE 1 #define RW_TWO_BYTES 2 #define RW_FOUR_BYTES 4 enum asf_registers { HBPeriod = 0x0000, WD8Rst = 0x0002, WD8Timer = 0x0003, WD16Rst = 0x0004, LSnsrPollCycle = 0x0006, ASFSnsrPollPrd = 0x0007, AlertReSendCnt = 0x0008, AlertReSendItvl = 0x0009, SMBAddr = 0x000A, SMBCap = 0x000B, ASFConfigR0 = 0x000C, ASFConfigR1 = 0x000D, WD16Timer = 0x000E, ConsoleMA = 0x0010, ConsoleIP = 0x0016, IPAddr = 0x001A, UUID = 0x0020, IANA = 0x0030, SysID = 0x0034, Community = 0x0036, StringLength = 0x004D, LC = 0x004E, EntityInst = 0x004F, FmCapMsk = 0x0050, SpCMDMsk = 0x0054, SysCapMsk = 0x0056, WDSysSt = 0x0057, RxMsgType = 0x0058, RxSpCMD = 0x0059, RxSpCMDPa = 0x005A, RxBtOpMsk = 0x005C, RmtRstAddr = 0x005E, RmtRstCmd = 0x005F, RmtRstData = 0x0060, RmtPwrOffAddr = 0x0061, RmtPwrOffCmd = 0x0062, RmtPwrOffData = 0x0063, RmtPwrOnAddr = 0x0064, RmtPwrOnCmd = 0x0065, RmtPwrOnData = 0x0066, RmtPCRAddr = 0x0067, RmtPCRCmd = 0x0068, RmtPCRData = 0x0069, RMCP_IANA = 0x006A, RMCP_OEM = 0x006E, ASFSnsr0Addr = 0x0070, ASFSnsrEvSt = 0x0073, ASFSnsrEvAlert = 0x0081, LSnsrNo = 0x00AD, AssrtEvntMsk = 0x00AE, DeAssrtEvntMsk = 0x00AF, LSnsrAddr0 = 0x00B0, LAlertCMD0 = 0x00B1, LAlertDataMsk0 = 0x00B2, LAlertCmp0 = 0x00B3, LAlertESnsrT0 = 0x00B4, LAlertET0 = 0x00B5, LAlertEOffset0 = 0x00B6, LAlertES0 = 0x00B7, LAlertSN0 = 0x00B8, LAlertEntity0 = 0x00B9, LAlertEI0 = 0x00BA, LSnsrState0 = 0x00BB, LSnsrAddr1 = 0x00BD, LAlertCMD1 = 0x00BE, LAlertDataMsk1 = 0x00BF, LAlertCmp1 = 0x00C0, LAlertESnsrT1 = 0x00C1, LAlertET1 = 0x00C2, LAlertEOffset1 = 0x00C3, LAlertES1 = 0x00C4, LAlertSN1 = 0x00C5, LAlertEntity1 = 0x00C6, LAlertEI1 = 0x00C7, LSnsrState1 = 0x00C8, LSnsrAddr2 = 0x00CA, LAlertCMD2 = 0x00CB, LAlertDataMsk2 = 0x00CC, LAlertCmp2 = 0x00CD, LAlertESnsrT2 = 0x00CE, LAlertET2 = 0x00CF, LAlertEOffset2 = 0x00D0, LAlertES2 = 0x00D1, LAlertSN2 = 0x00D2, LAlertEntity2 = 0x00D3, LAlertEI2 = 0x00D4, LSnsrState2 = 0x00D5, LSnsrAddr3 = 0x00D7, LAlertCMD3 = 0x00D8, LAlertDataMsk3 = 0x00D9, LAlertCmp3 = 0x00DA, LAlertESnsrT3 = 0x00DB, LAlertET3 = 0x00DC, LAlertEOffset3 = 0x00DD, LAlertES3 = 0x00DE, LAlertSN3 = 0x00DF, LAlertEntity3 = 0x00E0, LAlertEI3 = 0x00E1, LSnsrState3 = 0x00E2, LSnsrAddr4 = 0x00E4, LAlertCMD4 = 0x00E5, LAlertDataMsk4 = 0x00E6, LAlertCmp4 = 0x00E7, LAlertESnsrT4 = 0x00E8, LAlertET4 = 0x00E9, LAlertEOffset4 = 0x00EA, LAlertES4 = 0x00EB, LAlertSN4 = 0x00EC, LAlertEntity4 = 0x00ED, LAlertEI4 = 0x00EE, LSnsrState4 = 0x00EF, LSnsrAddr5 = 0x00F1, LAlertCMD5 = 0x00F2, LAlertDataMsk5 = 0x00F3, LAlertCmp5 = 0x00F4, LAlertESnsrT5 = 0x00F5, LAlertET5 = 0x00F6, LAlertEOffset5 = 0x00F7, LAlertES5 = 0x00F8, LAlertSN5 = 0x00F9, LAlertEntity5 = 0x00FA, LAlertEI5 = 0x00FB, LSnsrState5 = 0x00FC, LSnsrAddr6 = 0x00FE, LAlertCMD6 = 0x00FF, LAlertDataMsk6 = 0x0100, LAlertCmp6 = 0x0101, LAlertESnsrT6 = 0x0102, LAlertET6 = 0x0103, LAlertEOffset6 = 0x0104, LAlertES6 = 0x0105, LAlertSN6 = 0x0106, LAlertEntity6 = 0x0107, LAlertEI6 = 0x0108, LSnsrState6 = 0x0109, LSnsrAddr7 = 0x010B, LAlertCMD7 = 0x010C, LAlertDataMsk7 = 0x010D, LAlertCmp7 = 0x010E, LAlertESnsrT7 = 0x010F, LAlertET7 = 0x0110, LAlertEOffset7 = 0x0111, LAlertES7 = 0x0112, LAlertSN7 = 0x0113, LAlertEntity7 = 0x0114, LAlertEI7 = 0x0115, LSnsrState7 = 0x0116, LAssert = 0x0117, LDAssert = 0x0118, IPServiceType = 0x0119, IPIdfr = 0x011A, FlagFOffset = 0x011C, TTL = 0x011E, HbtEI = 0x011F, MgtConSID1 = 0x0120, MgtConSID2 = 0x0124, MgdCltSID = 0x0128, StCd = 0x012C, MgtConUR = 0x012D, MgtConUNL = 0x012E, AuthPd = 0x0130, IntyPd = 0x0138, MgtConRN = 0x0140, MgdCtlRN = 0x0150, MgtConUN = 0x0160, Rakp2IntCk = 0x0170, KO = 0x017C, KA = 0x0190, KG = 0x01A4, KR = 0x01B8, CP = 0x01CC, CQ = 0x01D0, KC = 0x01D4, ConsoleSid = 0x01E8, SIK1 = 0x01FC, SIK2 = 0x0210, Udpsrc_port = 0x0224, Udpdes_port = 0x0226, Asf_debug_mux = 0x0228 }; enum asf_cmdln_opt { ASF_GET, ASF_SET, ASF_HELP }; struct asf_ioctl_struct { unsigned int arg; unsigned int offset; union { unsigned int data[MAX_DATA_LEN]; char string[MAX_STR_LEN]; } u; }; int rtl8168_asf_ioctl(struct net_device *dev, struct ifreq *ifr); void rtl8168_asf_hbperiod(void __iomem *ioaddr, int arg, unsigned int *data); void rtl8168_asf_wd16rst(void __iomem *ioaddr, int arg, unsigned int *data); void rtl8168_asf_console_mac(struct rtl8168_private *, int arg, unsigned int *data); void rtl8168_asf_ip_address(struct rtl8168_private *, int arg, int offset, unsigned int *data); void rtl8168_asf_config_regs(void __iomem *ioaddr, int arg, int offset, unsigned int *data); void rtl8168_asf_capability_masks(void __iomem *ioaddr, int arg, int offset, unsigned int *data); void rtl8168_asf_community_string(void __iomem *ioaddr, int arg, char *string); void rtl8168_asf_community_string_len(void __iomem *ioaddr, int arg, unsigned int *data); void rtl8168_asf_alert_resend_interval(void __iomem *ioaddr, int arg, unsigned int *data); void rtl8168_asf_time_period(void __iomem *ioaddr, int arg, int offset, unsigned int *data); void rtl8168_asf_key_access(struct rtl8168_private *, int arg, int offset, unsigned int *data); void rtl8168_asf_rw_hexadecimal(void __iomem *ioaddr, int arg, int offset, int len, unsigned int *data); void rtl8168_asf_rw_iana(void __iomem *ioaddr, int arg, unsigned int *data); void rtl8168_asf_rw_uuid(void __iomem *ioaddr, int arg, unsigned int *data); void rtl8168_asf_rw_systemid(void __iomem *ioaddr, int arg, unsigned int *data);