Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

+352 -61
+1
drivers/net/au1000_eth.c
··· 32 32 * 33 33 */ 34 34 35 + #include <linux/config.h> 35 36 #include <linux/module.h> 36 37 #include <linux/kernel.h> 37 38 #include <linux/sched.h>
+256 -17
drivers/net/e100.c
··· 156 156 157 157 #define DRV_NAME "e100" 158 158 #define DRV_EXT "-NAPI" 159 - #define DRV_VERSION "3.4.14-k2"DRV_EXT 159 + #define DRV_VERSION "3.4.14-k4"DRV_EXT 160 160 #define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver" 161 161 #define DRV_COPYRIGHT "Copyright(c) 1999-2005 Intel Corporation" 162 162 #define PFX DRV_NAME ": " ··· 903 903 904 904 static void e100_get_defaults(struct nic *nic) 905 905 { 906 - struct param_range rfds = { .min = 16, .max = 256, .count = 64 }; 907 - struct param_range cbs = { .min = 64, .max = 256, .count = 64 }; 906 + struct param_range rfds = { .min = 16, .max = 256, .count = 256 }; 907 + struct param_range cbs = { .min = 64, .max = 256, .count = 128 }; 908 908 909 909 pci_read_config_byte(nic->pdev, PCI_REVISION_ID, &nic->rev_id); 910 910 /* MAC type is encoded as rev ID; exception: ICH is treated as 82559 */ ··· 1007 1007 c[16], c[17], c[18], c[19], c[20], c[21], c[22], c[23]); 1008 1008 } 1009 1009 1010 + /********************************************************/ 1011 + /* Micro code for 8086:1229 Rev 8 */ 1012 + /********************************************************/ 1013 + 1014 + /* Parameter values for the D101M B-step */ 1015 + #define D101M_CPUSAVER_TIMER_DWORD 78 1016 + #define D101M_CPUSAVER_BUNDLE_DWORD 65 1017 + #define D101M_CPUSAVER_MIN_SIZE_DWORD 126 1018 + 1019 + #define D101M_B_RCVBUNDLE_UCODE \ 1020 + {\ 1021 + 0x00550215, 0xFFFF0437, 0xFFFFFFFF, 0x06A70789, 0xFFFFFFFF, 0x0558FFFF, \ 1022 + 0x000C0001, 0x00101312, 0x000C0008, 0x00380216, \ 1023 + 0x0010009C, 0x00204056, 0x002380CC, 0x00380056, \ 1024 + 0x0010009C, 0x00244C0B, 0x00000800, 0x00124818, \ 1025 + 0x00380438, 0x00000000, 0x00140000, 0x00380555, \ 1026 + 0x00308000, 0x00100662, 0x00100561, 0x000E0408, \ 1027 + 0x00134861, 0x000C0002, 0x00103093, 0x00308000, \ 1028 + 0x00100624, 0x00100561, 0x000E0408, 0x00100861, \ 1029 + 0x000C007E, 0x00222C21, 0x000C0002, 0x00103093, \ 1030 + 0x00380C7A, 0x00080000, 0x00103090, 0x00380C7A, \ 1031 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1032 + 0x0010009C, 0x00244C2D, 0x00010004, 0x00041000, \ 1033 + 0x003A0437, 0x00044010, 0x0038078A, 0x00000000, \ 1034 + 0x00100099, 0x00206C7A, 0x0010009C, 0x00244C48, \ 1035 + 0x00130824, 0x000C0001, 0x00101213, 0x00260C75, \ 1036 + 0x00041000, 0x00010004, 0x00130826, 0x000C0006, \ 1037 + 0x002206A8, 0x0013C926, 0x00101313, 0x003806A8, \ 1038 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1039 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1040 + 0x00080600, 0x00101B10, 0x00050004, 0x00100826, \ 1041 + 0x00101210, 0x00380C34, 0x00000000, 0x00000000, \ 1042 + 0x0021155B, 0x00100099, 0x00206559, 0x0010009C, \ 1043 + 0x00244559, 0x00130836, 0x000C0000, 0x00220C62, \ 1044 + 0x000C0001, 0x00101B13, 0x00229C0E, 0x00210C0E, \ 1045 + 0x00226C0E, 0x00216C0E, 0x0022FC0E, 0x00215C0E, \ 1046 + 0x00214C0E, 0x00380555, 0x00010004, 0x00041000, \ 1047 + 0x00278C67, 0x00040800, 0x00018100, 0x003A0437, \ 1048 + 0x00130826, 0x000C0001, 0x00220559, 0x00101313, \ 1049 + 0x00380559, 0x00000000, 0x00000000, 0x00000000, \ 1050 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1051 + 0x00000000, 0x00130831, 0x0010090B, 0x00124813, \ 1052 + 0x000CFF80, 0x002606AB, 0x00041000, 0x00010004, \ 1053 + 0x003806A8, 0x00000000, 0x00000000, 0x00000000, \ 1054 + } 1055 + 1056 + /********************************************************/ 1057 + /* Micro code for 8086:1229 Rev 9 */ 1058 + /********************************************************/ 1059 + 1060 + /* Parameter values for the D101S */ 1061 + #define D101S_CPUSAVER_TIMER_DWORD 78 1062 + #define D101S_CPUSAVER_BUNDLE_DWORD 67 1063 + #define D101S_CPUSAVER_MIN_SIZE_DWORD 128 1064 + 1065 + #define D101S_RCVBUNDLE_UCODE \ 1066 + {\ 1067 + 0x00550242, 0xFFFF047E, 0xFFFFFFFF, 0x06FF0818, 0xFFFFFFFF, 0x05A6FFFF, \ 1068 + 0x000C0001, 0x00101312, 0x000C0008, 0x00380243, \ 1069 + 0x0010009C, 0x00204056, 0x002380D0, 0x00380056, \ 1070 + 0x0010009C, 0x00244F8B, 0x00000800, 0x00124818, \ 1071 + 0x0038047F, 0x00000000, 0x00140000, 0x003805A3, \ 1072 + 0x00308000, 0x00100610, 0x00100561, 0x000E0408, \ 1073 + 0x00134861, 0x000C0002, 0x00103093, 0x00308000, \ 1074 + 0x00100624, 0x00100561, 0x000E0408, 0x00100861, \ 1075 + 0x000C007E, 0x00222FA1, 0x000C0002, 0x00103093, \ 1076 + 0x00380F90, 0x00080000, 0x00103090, 0x00380F90, \ 1077 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1078 + 0x0010009C, 0x00244FAD, 0x00010004, 0x00041000, \ 1079 + 0x003A047E, 0x00044010, 0x00380819, 0x00000000, \ 1080 + 0x00100099, 0x00206FFD, 0x0010009A, 0x0020AFFD, \ 1081 + 0x0010009C, 0x00244FC8, 0x00130824, 0x000C0001, \ 1082 + 0x00101213, 0x00260FF7, 0x00041000, 0x00010004, \ 1083 + 0x00130826, 0x000C0006, 0x00220700, 0x0013C926, \ 1084 + 0x00101313, 0x00380700, 0x00000000, 0x00000000, \ 1085 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1086 + 0x00080600, 0x00101B10, 0x00050004, 0x00100826, \ 1087 + 0x00101210, 0x00380FB6, 0x00000000, 0x00000000, \ 1088 + 0x002115A9, 0x00100099, 0x002065A7, 0x0010009A, \ 1089 + 0x0020A5A7, 0x0010009C, 0x002445A7, 0x00130836, \ 1090 + 0x000C0000, 0x00220FE4, 0x000C0001, 0x00101B13, \ 1091 + 0x00229F8E, 0x00210F8E, 0x00226F8E, 0x00216F8E, \ 1092 + 0x0022FF8E, 0x00215F8E, 0x00214F8E, 0x003805A3, \ 1093 + 0x00010004, 0x00041000, 0x00278FE9, 0x00040800, \ 1094 + 0x00018100, 0x003A047E, 0x00130826, 0x000C0001, \ 1095 + 0x002205A7, 0x00101313, 0x003805A7, 0x00000000, \ 1096 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1097 + 0x00000000, 0x00000000, 0x00000000, 0x00130831, \ 1098 + 0x0010090B, 0x00124813, 0x000CFF80, 0x00260703, \ 1099 + 0x00041000, 0x00010004, 0x00380700 \ 1100 + } 1101 + 1102 + /********************************************************/ 1103 + /* Micro code for the 8086:1229 Rev F/10 */ 1104 + /********************************************************/ 1105 + 1106 + /* Parameter values for the D102 E-step */ 1107 + #define D102_E_CPUSAVER_TIMER_DWORD 42 1108 + #define D102_E_CPUSAVER_BUNDLE_DWORD 54 1109 + #define D102_E_CPUSAVER_MIN_SIZE_DWORD 46 1110 + 1111 + #define D102_E_RCVBUNDLE_UCODE \ 1112 + {\ 1113 + 0x007D028F, 0x0E4204F9, 0x14ED0C85, 0x14FA14E9, 0x0EF70E36, 0x1FFF1FFF, \ 1114 + 0x00E014B9, 0x00000000, 0x00000000, 0x00000000, \ 1115 + 0x00E014BD, 0x00000000, 0x00000000, 0x00000000, \ 1116 + 0x00E014D5, 0x00000000, 0x00000000, 0x00000000, \ 1117 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1118 + 0x00E014C1, 0x00000000, 0x00000000, 0x00000000, \ 1119 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1120 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1121 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1122 + 0x00E014C8, 0x00000000, 0x00000000, 0x00000000, \ 1123 + 0x00200600, 0x00E014EE, 0x00000000, 0x00000000, \ 1124 + 0x0030FF80, 0x00940E46, 0x00038200, 0x00102000, \ 1125 + 0x00E00E43, 0x00000000, 0x00000000, 0x00000000, \ 1126 + 0x00300006, 0x00E014FB, 0x00000000, 0x00000000, \ 1127 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1128 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1129 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1130 + 0x00906E41, 0x00800E3C, 0x00E00E39, 0x00000000, \ 1131 + 0x00906EFD, 0x00900EFD, 0x00E00EF8, 0x00000000, \ 1132 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1133 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1134 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1135 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1136 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1137 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1138 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1139 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1140 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1141 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1142 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1143 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1144 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1145 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ 1146 + } 1147 + 1010 1148 static void e100_load_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb) 1011 1149 { 1012 - int i; 1013 - static const u32 ucode[UCODE_SIZE] = { 1014 - /* NFS packets are misinterpreted as TCO packets and 1015 - * incorrectly routed to the BMC over SMBus. This 1016 - * microcode patch checks the fragmented IP bit in the 1017 - * NFS/UDP header to distinguish between NFS and TCO. */ 1018 - 0x0EF70E36, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF, 1019 - 0x1FFF1FFF, 0x00906E41, 0x00800E3C, 0x00E00E39, 0x00000000, 1020 - 0x00906EFD, 0x00900EFD, 0x00E00EF8, 1021 - }; 1150 + /* *INDENT-OFF* */ 1151 + static struct { 1152 + u32 ucode[UCODE_SIZE + 1]; 1153 + u8 mac; 1154 + u8 timer_dword; 1155 + u8 bundle_dword; 1156 + u8 min_size_dword; 1157 + } ucode_opts[] = { 1158 + { D101M_B_RCVBUNDLE_UCODE, 1159 + mac_82559_D101M, 1160 + D101M_CPUSAVER_TIMER_DWORD, 1161 + D101M_CPUSAVER_BUNDLE_DWORD, 1162 + D101M_CPUSAVER_MIN_SIZE_DWORD }, 1163 + { D101S_RCVBUNDLE_UCODE, 1164 + mac_82559_D101S, 1165 + D101S_CPUSAVER_TIMER_DWORD, 1166 + D101S_CPUSAVER_BUNDLE_DWORD, 1167 + D101S_CPUSAVER_MIN_SIZE_DWORD }, 1168 + { D102_E_RCVBUNDLE_UCODE, 1169 + mac_82551_F, 1170 + D102_E_CPUSAVER_TIMER_DWORD, 1171 + D102_E_CPUSAVER_BUNDLE_DWORD, 1172 + D102_E_CPUSAVER_MIN_SIZE_DWORD }, 1173 + { D102_E_RCVBUNDLE_UCODE, 1174 + mac_82551_10, 1175 + D102_E_CPUSAVER_TIMER_DWORD, 1176 + D102_E_CPUSAVER_BUNDLE_DWORD, 1177 + D102_E_CPUSAVER_MIN_SIZE_DWORD }, 1178 + { {0}, 0, 0, 0, 0} 1179 + }, *opts; 1180 + /* *INDENT-ON* */ 1022 1181 1023 - if(nic->mac == mac_82551_F || nic->mac == mac_82551_10) { 1024 - for(i = 0; i < UCODE_SIZE; i++) 1182 + /************************************************************************* 1183 + * CPUSaver parameters 1184 + * 1185 + * All CPUSaver parameters are 16-bit literals that are part of a 1186 + * "move immediate value" instruction. By changing the value of 1187 + * the literal in the instruction before the code is loaded, the 1188 + * driver can change the algorithm. 1189 + * 1190 + * INTDELAY - This loads the dead-man timer with its inital value. 1191 + * When this timer expires the interrupt is asserted, and the 1192 + * timer is reset each time a new packet is received. (see 1193 + * BUNDLEMAX below to set the limit on number of chained packets) 1194 + * The current default is 0x600 or 1536. Experiments show that 1195 + * the value should probably stay within the 0x200 - 0x1000. 1196 + * 1197 + * BUNDLEMAX - 1198 + * This sets the maximum number of frames that will be bundled. In 1199 + * some situations, such as the TCP windowing algorithm, it may be 1200 + * better to limit the growth of the bundle size than let it go as 1201 + * high as it can, because that could cause too much added latency. 1202 + * The default is six, because this is the number of packets in the 1203 + * default TCP window size. A value of 1 would make CPUSaver indicate 1204 + * an interrupt for every frame received. If you do not want to put 1205 + * a limit on the bundle size, set this value to xFFFF. 1206 + * 1207 + * BUNDLESMALL - 1208 + * This contains a bit-mask describing the minimum size frame that 1209 + * will be bundled. The default masks the lower 7 bits, which means 1210 + * that any frame less than 128 bytes in length will not be bundled, 1211 + * but will instead immediately generate an interrupt. This does 1212 + * not affect the current bundle in any way. Any frame that is 128 1213 + * bytes or large will be bundled normally. This feature is meant 1214 + * to provide immediate indication of ACK frames in a TCP environment. 1215 + * Customers were seeing poor performance when a machine with CPUSaver 1216 + * enabled was sending but not receiving. The delay introduced when 1217 + * the ACKs were received was enough to reduce total throughput, because 1218 + * the sender would sit idle until the ACK was finally seen. 1219 + * 1220 + * The current default is 0xFF80, which masks out the lower 7 bits. 1221 + * This means that any frame which is x7F (127) bytes or smaller 1222 + * will cause an immediate interrupt. Because this value must be a 1223 + * bit mask, there are only a few valid values that can be used. To 1224 + * turn this feature off, the driver can write the value xFFFF to the 1225 + * lower word of this instruction (in the same way that the other 1226 + * parameters are used). Likewise, a value of 0xF800 (2047) would 1227 + * cause an interrupt to be generated for every frame, because all 1228 + * standard Ethernet frames are <= 2047 bytes in length. 1229 + *************************************************************************/ 1230 + 1231 + /* if you wish to disable the ucode functionality, while maintaining the 1232 + * workarounds it provides, set the following defines to: 1233 + * BUNDLESMALL 0 1234 + * BUNDLEMAX 1 1235 + * INTDELAY 1 1236 + */ 1237 + #define BUNDLESMALL 1 1238 + #define BUNDLEMAX (u16)6 1239 + #define INTDELAY (u16)1536 /* 0x600 */ 1240 + 1241 + /* do not load u-code for ICH devices */ 1242 + if (nic->flags & ich) 1243 + goto noloaducode; 1244 + 1245 + /* Search for ucode match against h/w rev_id */ 1246 + for (opts = ucode_opts; opts->mac; opts++) { 1247 + int i; 1248 + u32 *ucode = opts->ucode; 1249 + if (nic->mac != opts->mac) 1250 + continue; 1251 + 1252 + /* Insert user-tunable settings */ 1253 + ucode[opts->timer_dword] &= 0xFFFF0000; 1254 + ucode[opts->timer_dword] |= INTDELAY; 1255 + ucode[opts->bundle_dword] &= 0xFFFF0000; 1256 + ucode[opts->bundle_dword] |= BUNDLEMAX; 1257 + ucode[opts->min_size_dword] &= 0xFFFF0000; 1258 + ucode[opts->min_size_dword] |= (BUNDLESMALL) ? 0xFFFF : 0xFF80; 1259 + 1260 + for (i = 0; i < UCODE_SIZE; i++) 1025 1261 cb->u.ucode[i] = cpu_to_le32(ucode[i]); 1026 1262 cb->command = cpu_to_le16(cb_ucode); 1027 - } else 1028 - cb->command = cpu_to_le16(cb_nop); 1263 + return; 1264 + } 1265 + 1266 + noloaducode: 1267 + cb->command = cpu_to_le16(cb_nop); 1029 1268 } 1030 1269 1031 1270 static void e100_setup_iaaddr(struct nic *nic, struct cb *cb,
+1 -1
drivers/net/fec_8xx/Kconfig
··· 1 1 config FEC_8XX 2 2 tristate "Motorola 8xx FEC driver" 3 - depends on NET_ETHERNET && FEC 3 + depends on NET_ETHERNET && 8xx 4 4 select MII 5 5 6 6 config FEC_8XX_GENERIC_PHY
+1 -1
drivers/net/ioc3-eth.c
··· 1360 1360 1361 1361 static int __init ioc3_init_module(void) 1362 1362 { 1363 - return pci_module_init(&ioc3_driver); 1363 + return pci_register_driver(&ioc3_driver); 1364 1364 } 1365 1365 1366 1366 static void __exit ioc3_cleanup_module(void)
+2 -4
drivers/net/r8169.c
··· 1346 1346 } else { 1347 1347 if (netif_msg_probe(tp)) { 1348 1348 printk(KERN_ERR PFX 1349 - "Cannot find PowerManagement capability. " 1350 - "Aborting.\n"); 1349 + "PowerManagement capability not found.\n"); 1351 1350 } 1352 - goto err_out_mwi; 1353 1351 } 1354 1352 1355 1353 /* make sure PCI base addr 1 is MMIO */ ··· 2514 2516 } while (boguscnt > 0); 2515 2517 2516 2518 if (boguscnt <= 0) { 2517 - if (net_ratelimit() && netif_msg_intr(tp)) { 2519 + if (netif_msg_intr(tp) && net_ratelimit() ) { 2518 2520 printk(KERN_WARNING 2519 2521 "%s: Too much work at interrupt!\n", dev->name); 2520 2522 }
+25 -11
drivers/net/saa9730.h
··· 1 1 /* 2 - * Carsten Langgaard, carstenl@mips.com 3 - * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. 2 + * Copyright (C) 2000, 2005 MIPS Technologies, Inc. All rights reserved. 3 + * Authors: Carsten Langgaard <carstenl@mips.com> 4 + * Maciej W. Rozycki <macro@mips.com> 4 5 * 5 6 * ######################################################################## 6 7 * ··· 266 265 267 266 /* The SAA9730 (LAN) controller register map, as seen via the PCI-bus. */ 268 267 #define SAA9730_LAN_REGS_ADDR 0x20400 268 + #define SAA9730_LAN_REGS_SIZE 0x00400 269 269 270 270 struct lan_saa9730_regmap { 271 271 volatile unsigned int TxBuffA; /* 0x20400 */ ··· 311 309 312 310 /* The SAA9730 (EVM) controller register map, as seen via the PCI-bus. */ 313 311 #define SAA9730_EVM_REGS_ADDR 0x02000 312 + #define SAA9730_EVM_REGS_SIZE 0x00400 314 313 315 314 struct evm_saa9730_regmap { 316 315 volatile unsigned int InterruptStatus1; /* 0x2000 */ ··· 332 329 333 330 334 331 struct lan_saa9730_private { 332 + /* 333 + * Rx/Tx packet buffers. 334 + * The Rx and Tx packets must be PACKET_SIZE aligned. 335 + */ 336 + void *buffer_start; 337 + unsigned int buffer_size; 338 + 339 + /* 340 + * DMA address of beginning of this object, returned 341 + * by pci_alloc_consistent(). 342 + */ 343 + dma_addr_t dma_addr; 344 + 345 + /* Pointer to the associated pci device structure */ 346 + struct pci_dev *pci_dev; 347 + 335 348 /* Pointer for the SAA9730 LAN controller register set. */ 336 349 t_lan_saa9730_regmap *lan_saa9730_regs; 337 350 338 351 /* Pointer to the SAA9730 EVM register. */ 339 352 t_evm_saa9730_regmap *evm_saa9730_regs; 340 353 341 - /* TRUE if the next buffer to write is RxBuffA, FALSE if RxBuffB. */ 342 - unsigned char NextRcvToUseIsA; 343 354 /* Rcv buffer Index. */ 344 355 unsigned char NextRcvPacketIndex; 356 + /* Next buffer index. */ 357 + unsigned char NextRcvBufferIndex; 345 358 346 359 /* Index of next packet to use in that buffer. */ 347 360 unsigned char NextTxmPacketIndex; ··· 372 353 unsigned char DmaRcvPackets; 373 354 unsigned char DmaTxmPackets; 374 355 375 - unsigned char RcvAIndex; /* index into RcvBufferSpace[] for Blk A */ 376 - unsigned char RcvBIndex; /* index into RcvBufferSpace[] for Blk B */ 377 - 378 - unsigned int 379 - TxmBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_TXM_Q_SIZE]; 380 - unsigned int 381 - RcvBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_RCV_Q_SIZE]; 356 + void *TxmBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_TXM_Q_SIZE]; 357 + void *RcvBuffer[LAN_SAA9730_BUFFERS][LAN_SAA9730_RCV_Q_SIZE]; 382 358 unsigned int TxBufferFree[LAN_SAA9730_BUFFERS]; 383 359 384 360 unsigned char PhysicalAddress[LAN_SAA9730_CAM_ENTRIES][6];
+13 -4
drivers/net/smc91x.c
··· 155 155 #define MEMORY_WAIT_TIME 16 156 156 157 157 /* 158 + * The maximum number of processing loops allowed for each call to the 159 + * IRQ handler. 160 + */ 161 + #define MAX_IRQ_LOOPS 8 162 + 163 + /* 158 164 * This selects whether TX packets are sent one by one to the SMC91x internal 159 165 * memory and throttled until transmission completes. This may prevent 160 166 * RX overruns a litle by keeping much of the memory free for RX packets ··· 690 684 691 685 /* queue the packet for TX */ 692 686 SMC_SET_MMU_CMD(MC_ENQUEUE); 693 - SMC_ACK_INT(IM_TX_EMPTY_INT); 694 687 smc_special_unlock(&lp->lock); 695 688 696 689 dev->trans_start = jiffies; ··· 1212 1207 smc_phy_check_media(dev, 1); 1213 1208 1214 1209 smc_phy_configure_exit: 1210 + SMC_SELECT_BANK(2); 1215 1211 spin_unlock_irq(&lp->lock); 1216 1212 lp->work_pending = 0; 1217 1213 } ··· 1311 1305 SMC_SET_INT_MASK(0); 1312 1306 1313 1307 /* set a timeout value, so I don't stay here forever */ 1314 - timeout = 8; 1308 + timeout = MAX_IRQ_LOOPS; 1315 1309 1316 1310 do { 1317 1311 status = SMC_GET_INT(); ··· 1378 1372 /* restore register states */ 1379 1373 SMC_SET_PTR(saved_pointer); 1380 1374 SMC_SET_INT_MASK(mask); 1381 - 1382 1375 spin_unlock(&lp->lock); 1383 1376 1384 - DBG(3, "%s: Interrupt done (%d loops)\n", dev->name, 8-timeout); 1377 + if (timeout == MAX_IRQ_LOOPS) 1378 + PRINTK("%s: spurious interrupt (mask = 0x%02x)\n", 1379 + dev->name, mask); 1380 + DBG(3, "%s: Interrupt done (%d loops)\n", 1381 + dev->name, MAX_IRQ_LOOPS - timeout); 1385 1382 1386 1383 /* 1387 1384 * We return IRQ_HANDLED unconditionally here even if there was
+6
drivers/net/wan/hdlc_cisco.c
··· 192 192 "uptime %ud%uh%um%us)\n", 193 193 dev->name, days, hrs, 194 194 min, sec); 195 + #if 0 195 196 netif_carrier_on(dev); 197 + #endif 196 198 hdlc->state.cisco.up = 1; 197 199 } 198 200 } ··· 227 225 hdlc->state.cisco.settings.timeout * HZ)) { 228 226 hdlc->state.cisco.up = 0; 229 227 printk(KERN_INFO "%s: Link down\n", dev->name); 228 + #if 0 230 229 netif_carrier_off(dev); 230 + #endif 231 231 } 232 232 233 233 cisco_keepalive_send(dev, CISCO_KEEPALIVE_REQ, ··· 265 261 { 266 262 hdlc_device *hdlc = dev_to_hdlc(dev); 267 263 del_timer_sync(&hdlc->state.cisco.timer); 264 + #if 0 268 265 if (netif_carrier_ok(dev)) 269 266 netif_carrier_off(dev); 267 + #endif 270 268 hdlc->state.cisco.up = 0; 271 269 hdlc->state.cisco.request_sent = 0; 272 270 }
+4
drivers/net/wan/hdlc_fr.c
··· 545 545 546 546 hdlc->state.fr.reliable = reliable; 547 547 if (reliable) { 548 + #if 0 548 549 if (!netif_carrier_ok(dev)) 549 550 netif_carrier_on(dev); 551 + #endif 550 552 551 553 hdlc->state.fr.n391cnt = 0; /* Request full status */ 552 554 hdlc->state.fr.dce_changed = 1; ··· 562 560 } 563 561 } 564 562 } else { 563 + #if 0 565 564 if (netif_carrier_ok(dev)) 566 565 netif_carrier_off(dev); 566 + #endif 567 567 568 568 while (pvc) { /* Deactivate all PVCs */ 569 569 pvc_carrier(0, pvc);
+6
drivers/net/wan/hdlc_generic.c
··· 79 79 hdlc_device *hdlc = dev_to_hdlc(dev); 80 80 if (hdlc->proto.start) 81 81 return hdlc->proto.start(dev); 82 + #if 0 82 83 #ifdef DEBUG_LINK 83 84 if (netif_carrier_ok(dev)) 84 85 printk(KERN_ERR "hdlc_set_carrier_on(): already on\n"); 85 86 #endif 86 87 netif_carrier_on(dev); 88 + #endif 87 89 } 88 90 89 91 ··· 96 94 if (hdlc->proto.stop) 97 95 return hdlc->proto.stop(dev); 98 96 97 + #if 0 99 98 #ifdef DEBUG_LINK 100 99 if (!netif_carrier_ok(dev)) 101 100 printk(KERN_ERR "hdlc_set_carrier_off(): already off\n"); 102 101 #endif 103 102 netif_carrier_off(dev); 103 + #endif 104 104 } 105 105 106 106 ··· 298 294 if (result != 0) 299 295 return -EIO; 300 296 297 + #if 0 301 298 if (netif_carrier_ok(dev)) 302 299 netif_carrier_off(dev); /* no carrier until DCD goes up */ 300 + #endif 303 301 304 302 return 0; 305 303 }
+3 -3
drivers/net/wireless/hermes.c
··· 398 398 * 399 399 * Returns: < 0 on internal failure (errno), 0 on success, > 0 on error from firmware 400 400 */ 401 - int hermes_bap_pread(hermes_t *hw, int bap, void *buf, unsigned len, 401 + int hermes_bap_pread(hermes_t *hw, int bap, void *buf, int len, 402 402 u16 id, u16 offset) 403 403 { 404 404 int dreg = bap ? HERMES_DATA1 : HERMES_DATA0; ··· 424 424 * 425 425 * Returns: < 0 on internal failure (errno), 0 on success, > 0 on error from firmware 426 426 */ 427 - int hermes_bap_pwrite(hermes_t *hw, int bap, const void *buf, unsigned len, 427 + int hermes_bap_pwrite(hermes_t *hw, int bap, const void *buf, int len, 428 428 u16 id, u16 offset) 429 429 { 430 430 int dreg = bap ? HERMES_DATA1 : HERMES_DATA0; ··· 450 450 * 451 451 * Returns: < 0 on internal failure (errno), 0 on success, > 0 on error from firmware 452 452 */ 453 - int hermes_bap_pwrite_pad(hermes_t *hw, int bap, const void *buf, unsigned data_len, unsigned len, 453 + int hermes_bap_pwrite_pad(hermes_t *hw, int bap, const void *buf, unsigned data_len, int len, 454 454 u16 id, u16 offset) 455 455 { 456 456 int dreg = bap ? HERMES_DATA1 : HERMES_DATA0;
+3 -3
drivers/net/wireless/hermes.h
··· 372 372 struct hermes_response *resp); 373 373 int hermes_allocate(hermes_t *hw, u16 size, u16 *fid); 374 374 375 - int hermes_bap_pread(hermes_t *hw, int bap, void *buf, unsigned len, 375 + int hermes_bap_pread(hermes_t *hw, int bap, void *buf, int len, 376 376 u16 id, u16 offset); 377 - int hermes_bap_pwrite(hermes_t *hw, int bap, const void *buf, unsigned len, 377 + int hermes_bap_pwrite(hermes_t *hw, int bap, const void *buf, int len, 378 378 u16 id, u16 offset); 379 379 int hermes_bap_pwrite_pad(hermes_t *hw, int bap, const void *buf, 380 - unsigned data_len, unsigned len, u16 id, u16 offset); 380 + unsigned data_len, int len, u16 id, u16 offset); 381 381 int hermes_read_ltv(hermes_t *hw, int bap, u16 rid, unsigned buflen, 382 382 u16 *length, void *buf); 383 383 int hermes_write_ltv(hermes_t *hw, int bap, u16 rid,
+8 -3
drivers/net/wireless/i82593.h
··· 7 7 * 8 8 * Copyright 1994, Anders Klemets <klemets@it.kth.se> 9 9 * 10 - * This software may be freely distributed for noncommercial purposes 11 - * as long as this notice is retained. 12 - * 13 10 * HISTORY 14 11 * i82593.h,v 12 + * Revision 1.4 2005/11/4 09:15:00 baroniunas 13 + * Modified copyright with permission of author as follows: 14 + * 15 + * "If I82539.H is the only file with my copyright statement 16 + * that is included in the Source Forge project, then you have 17 + * my approval to change the copyright statement to be a GPL 18 + * license, in the way you proposed on October 10." 19 + * 15 20 * Revision 1.1 1996/07/17 15:23:12 root 16 21 * Initial revision 17 22 *
+18 -11
drivers/net/wireless/ipw2100.c
··· 6344 6344 dev->ethtool_ops = &ipw2100_ethtool_ops; 6345 6345 dev->tx_timeout = ipw2100_tx_timeout; 6346 6346 dev->wireless_handlers = &ipw2100_wx_handler_def; 6347 - dev->get_wireless_stats = ipw2100_wx_wireless_stats; 6347 + priv->wireless_data.ieee80211 = priv->ieee; 6348 + dev->wireless_data = &priv->wireless_data; 6348 6349 dev->set_mac_address = ipw2100_set_address; 6349 6350 dev->watchdog_timeo = 3 * HZ; 6350 6351 dev->irq = 0; ··· 7178 7177 break; 7179 7178 } 7180 7179 range->num_frequency = val; 7180 + 7181 + /* Event capability (kernel + driver) */ 7182 + range->event_capa[0] = (IW_EVENT_CAPA_K_0 | 7183 + IW_EVENT_CAPA_MASK(SIOCGIWAP)); 7184 + range->event_capa[1] = IW_EVENT_CAPA_K_1; 7181 7185 7182 7186 IPW_DEBUG_WX("GET Range\n"); 7183 7187 ··· 8452 8446 #endif /* CONFIG_IPW2100_MONITOR */ 8453 8447 }; 8454 8448 8455 - static struct iw_handler_def ipw2100_wx_handler_def = { 8456 - .standard = ipw2100_wx_handlers, 8457 - .num_standard = sizeof(ipw2100_wx_handlers) / sizeof(iw_handler), 8458 - .num_private = sizeof(ipw2100_private_handler) / sizeof(iw_handler), 8459 - .num_private_args = sizeof(ipw2100_private_args) / 8460 - sizeof(struct iw_priv_args), 8461 - .private = (iw_handler *) ipw2100_private_handler, 8462 - .private_args = (struct iw_priv_args *)ipw2100_private_args, 8463 - }; 8464 - 8465 8449 /* 8466 8450 * Get wireless statistics. 8467 8451 * Called by /proc/net/wireless ··· 8592 8596 8593 8597 return (struct iw_statistics *)NULL; 8594 8598 } 8599 + 8600 + static struct iw_handler_def ipw2100_wx_handler_def = { 8601 + .standard = ipw2100_wx_handlers, 8602 + .num_standard = sizeof(ipw2100_wx_handlers) / sizeof(iw_handler), 8603 + .num_private = sizeof(ipw2100_private_handler) / sizeof(iw_handler), 8604 + .num_private_args = sizeof(ipw2100_private_args) / 8605 + sizeof(struct iw_priv_args), 8606 + .private = (iw_handler *) ipw2100_private_handler, 8607 + .private_args = (struct iw_priv_args *)ipw2100_private_args, 8608 + .get_wireless_stats = ipw2100_wx_wireless_stats, 8609 + }; 8595 8610 8596 8611 static void ipw2100_wx_event_work(struct ipw2100_priv *priv) 8597 8612 {
+2
drivers/net/wireless/ipw2100.h
··· 571 571 struct net_device *net_dev; 572 572 struct iw_statistics wstats; 573 573 574 + struct iw_public_data wireless_data; 575 + 574 576 struct tasklet_struct irq_tasklet; 575 577 576 578 struct workqueue_struct *workqueue;
+2 -2
drivers/net/wireless/prism54/isl_38xx.c
··· 164 164 /* assert the Wakeup interrupt in the Device Interrupt Register */ 165 165 isl38xx_w32_flush(device_base, ISL38XX_DEV_INT_WAKEUP, 166 166 ISL38XX_DEV_INT_REG); 167 + 168 + #if VERBOSE > SHOW_ERROR_MESSAGES 167 169 udelay(ISL38XX_WRITEIO_DELAY); 168 170 169 171 /* perform another read on the Device Status Register */ 170 172 reg = readl(device_base + ISL38XX_CTRL_STAT_REG); 171 - 172 - #if VERBOSE > SHOW_ERROR_MESSAGES 173 173 do_gettimeofday(&current_time); 174 174 DEBUG(SHOW_TRACING, "%08li.%08li Device register read %08x\n", 175 175 current_time.tv_sec, (long)current_time.tv_usec, reg);
+1 -1
include/net/ieee80211.h
··· 1042 1042 case IEEE80211_4ADDR_LEN: 1043 1043 return ((struct ieee80211_hdr_4addr *)hdr)->payload; 1044 1044 } 1045 - 1045 + return NULL; 1046 1046 } 1047 1047 1048 1048 static inline int ieee80211_is_ofdm_rate(u8 rate)