if(nic->mac == mac_82551_F || nic->mac == mac_82551_10) { for(i = 0; i < UCODE_SIZE; i++) 
/************************************************************************* *  CPUSaver parameters * *  All CPUSaver parameters are 16-bit literals that are part of a *  "move immediate value" instruction.  By changing the value of *  the literal in the instruction before the code is loaded, the *  driver can change the algorithm. * *  INTDELAY - This loads the dead-man timer with its inital value. *    When this timer expires the interrupt is asserted, and the *    timer is reset each time a new packet is received.  (see *    BUNDLEMAX below to set the limit on number of chained packets) *    The current default is 0x600 or 1536.  Experiments show that *    the value should probably stay within the 0x200 - 0x1000. * *  BUNDLEMAX - *    This sets the maximum number of frames that will be bundled.  In *    some situations, such as the TCP windowing algorithm, it may be *    better to limit the growth of the bundle size than let it go as *    high as it can, because that could cause too much added latency. *    The default is six, because this is the number of packets in the *    default TCP window size.  A value of 1 would make CPUSaver indicate *    an interrupt for every frame received.  If you do not want to put *    a limit on the bundle size, set this value to xFFFF. * *  BUNDLESMALL - *    This contains a bit-mask describing the minimum size frame that *    will be bundled.  The default masks the lower 7 bits, which means *    that any frame less than 128 bytes in length will not be bundled, *    but will instead immediately generate an interrupt.  This does *    not affect the current bundle in any way.  Any frame that is 128 *    bytes or large will be bundled normally.  This feature is meant *    to provide immediate indication of ACK frames in a TCP environment. *    Customers were seeing poor performance when a machine with CPUSaver *    enabled was sending but not receiving.  The delay introduced when *    the ACKs were received was enough to reduce total throughput, because *    the sender would sit idle until the ACK was finally seen. * *    The current default is 0xFF80, which masks out the lower 7 bits. *    This means that any frame which is x7F (127) bytes or smaller *    will cause an immediate interrupt.  Because this value must be a *    bit mask, there are only a few valid values that can be used.  To *    turn this feature off, the driver can write the value xFFFF to the *    lower word of this instruction (in the same way that the other *    parameters are used).  Likewise, a value of 0xF800 (2047) would *    cause an interrupt to be generated for every frame, because all *    standard Ethernet frames are <= 2047 bytes in length. *************************************************************************/  /* if you wish to disable the ucode functionality, while maintaining the * workarounds it provides, set the following defines to: * BUNDLESMALL 0 * BUNDLEMAX 1 * INTDELAY 1 */ #define BUNDLESMALL 1 #define BUNDLEMAX (u16)6 #define INTDELAY (u16)1536 /* 0x600 */  /* do not load u-code for ICH devices */ if (nic->flags & ich) goto noloaducode;  /* Search for ucode match against h/w rev_id */ for (opts = ucode_opts; opts->mac; opts++) { int i; u32 *ucode = opts->ucode; if (nic->mac != opts->mac) continue;  /* Insert user-tunable settings */ ucode[opts->timer_dword] &= 0xFFFF0000; ucode[opts->timer_dword] |= INTDELAY; ucode[opts->bundle_dword] &= 0xFFFF0000; ucode[opts->bundle_dword] |= BUNDLEMAX; ucode[opts->min_size_dword] &= 0xFFFF0000; ucode[opts->min_size_dword] |= (BUNDLESMALL) ? 0xFFFF : 0xFF80;  for (i = 0; i < UCODE_SIZE; i++) 
static void e100_load_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb){	int i;	static const u32 ucode[UCODE_SIZE] = {		/* NFS packets are misinterpreted as TCO packets and		 * incorrectly routed to the BMC over SMBus.  This		 * microcode patch checks the fragmented IP bit in the		 * NFS/UDP header to distinguish between NFS and TCO. */		0x0EF70E36, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF,		0x1FFF1FFF, 0x00906E41, 0x00800E3C, 0x00E00E39, 0x00000000,		0x00906EFD, 0x00900EFD,	0x00E00EF8,	};	if(nic->mac == mac_82551_F || nic->mac == mac_82551_10) {		for(i = 0; i < UCODE_SIZE; i++)			cb->u.ucode[i] = cpu_to_le32(ucode[i]);		cb->command = cpu_to_le16(cb_ucode);	} else		cb->command = cpu_to_le16(cb_nop);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/2afecc047e9077d8dc9e312b32e944955e71ce53/e100.c/buggy/drivers/net/e100.c