changelog

来自「开放源码实时操作系统源码.」· 代码 · 共 845 行 · 第 1/3 页

TXT
845
字号
	via the EBSA285 driver]
	(eth_dsr): Do not call upper layer unless we are in a networked
	[non-RedBoot, non-polled] environment.  This is necessary because
	we call our own DSR from foreground to unstick after a lost
	interrupt.
	(find_82559s_match_func): New routine to discover disparate
	devices on the PCI bus.  Used in pci_init_find_82559s().
	(dump_txcb): Various junk debug functions removed.

2001-03-12  Hugo Tyson  <hmt@redhat.com>

	* src/if_i82559.c: Some tidying up, and two main additions to the
	mechanisms used for managing this nasty entomological device.
	(i82559_can_send): [amongst other places] if it is defined, use
	CYGHWR_DEVS_ETH_INTEL_I82559_MISSED_INTERRUPT(p_i82559) to detect
	that we missed an interrupt - and if so, call the ISR and DSR
	directly.  This is necessary for edge-triggered interrupt
	controllers being fed by this level-sending device, where an
	internal event in the device can keep the line low after the code
	thinks that all events have been handled.
	(Check82559TxLockupTimeout): This routine runs a timeout (if the
	HAL provides a pair of watchdog-like macros) which performs a
	selective reset of the device if it takes too long to transmit.
	This happens rarely, but when it happens this is the only way out;
	the tx machine is fixated on one tx and never comes out of it.
	

	Sadly these two techniques to escape lockup only work if the
	driver is called (ie. the stack tries to tx); incoming packets
	cannot unwedge a device.  We might need to add a poll from the
	stack in future if this causes problems.
	
	* include/i82559_info.h (I82559): Added two words for managing tx
	lockup timeouts since this must be per-device.

2001-03-02  Hugo Tyson  <hmt@redhat.com>

	* src/if_i82559.c: Remove "Platform specific - defaults provided"
	definitions for CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE/SIZE; all
	platforms now provide these.
	Added a little further disclaimer to the comment about LE/BE/GE.

2001-03-01  Hugo Tyson  <hmt@redhat.com>

	* src/if_i82559.c: Global change: what was HAL_READ_UINTxx or
	HAL_WRITE_UINTxx are now READMEMxx or WRITEMEMxx - just
	convenience macros that do all the volatile casts we want there.
	Definitions of INL, INW, INB and OUTL, OUTW, OUTB recast in terms
	of HAL_READ_UINTxx or HAL_WRITE_UINTxx so that they will use
	proper IO operations on those CISCy mainframes that have a special
	way of doing IO.

2001-03-01  Hugo Tyson  <hmt@redhat.com>

	* src/if_i82559.c: Much more configury added, so that I can use it
	with a new target board.  Including, but not limited to:

	o An essay about addressing, big endian, little endian and GIB
	endian (sic) and how we treat the various types of access within
	this module.  In other words, a lot of comments.

	o CYGNUM_DEVS_ETH_INTEL_I82559_SEPARATE_MUX_INTERRUPT to clarify
	that such an interrupt is SEPARATE from any simplex intrs that are
	also available.

	o CYGHWR_DEVS_ETH_INTEL_I82559_DEMUX_ALL for hardware where the
	the only interrupt is a multiplexed (wire or'd) one.  Plus
	associated macros for direct manipulation of interrupt masks and
	acknowledgments.

	o Support for external definition from the platform HAL or driver
	config module of CYGHWR_INTEL_I82559_PCI_MEM_MAP_BASE and SIZE.
	Also CYGHWR_INTEL_I82559_PCI_VIRT_TO_BUS.

	o LE definitions of a few macros that were missing.

	o Separated definitions of structure offsets from BE/LE
	definitions of consts within the words.  Offsets vary with GIB
	endian, for those CPUs who just flip bits.  No change for BE
	machines, needed for LE machines to work.  To enable address-flip
	within structures, define CYG_ADDRESSING_IS_GIBENDIAN.

	o Re-org of mux/simplex deliver and isr's for new configuration.

	o Couple of extra debug printouts.

2001-01-26  Jesper Skov  <jskov@redhat.com>

	* src/if_i82559.c: Added FIXME for promiscuous mode.

2001-01-25  Jesper Skov  <jskov@redhat.com>

	* src/if_i82559.c: Replace CYGNUM_HAL_INTERRUPT_PCI_IRQ with
	CYGNUM_DEVS_ETH_INTEL_I82559_MUX_INTERRUPT which platform .inl
	must provide when appropriate. Changed _deliver functions to match
	_isr functions.
	* include/i82559_info.h: Remove debug hacks.
	Fix declaration.

	* src/if_i82559.c: Moved device descriptors into platform header.
	Allow individual devices to hardwire ESA. Handle N devices instead
	of just 1 or 2.
	* include/i82559_info.h: ESA hardwired flag added.
	* cdl/intel_i82559_eth_drivers.cdl: Device details moved to
	platform CDL.

	* src/if_i82559.c (i82559_start): Poll status after dump command.

2001-01-24  Jesper Skov  <jskov@redhat.com>

	* src/if_i82559.c: [changes from yesterday] Some more endian
	fiddle, and the device coughs out the initial ARP packets.
	(wait_for_cmd_done): semantics changed to wait for pending CU
	cmds.
	(i82559_reset): Cleaned up to spec. Init register bases after
	reset.
	Fix initialization of hardwired ESA.
	Correct configuration command.
	Fix rcv len masking.
	(eth_set_mac_address): Set driver's ESA as well. Proper check for
	completion.
	Fix LE structure offsets.
	(i82559_start): Call new eth_set_config to enable device. Last
	hacks cleaned up.
	Remove a few printfs.

2001-01-23  Jesper Skov  <jskov@redhat.com>

	* src/if_i82559.c: Debug hackery and some endian issues resolved.

2001-01-22  Jesper Skov  <jskov@redhat.com>

	* src/if_i82559.c: Major changes, getting rid of device structures
	in favor of HAL IO accessor macros. Also added endian conversion
	macros where required.
	* include/i82559_info.h: Change type of device structures to char.

2001-01-19  Jesper Skov  <jskov@redhat.com>

	* cdl/intel_i82559_eth_drivers.cdl: Hack for just one interface
	now.
	* src/if_i82559.c: Fix IO functions. Handle EEPROM not being
	attached to device.

	* src/if_i82559.c: Use uncached/physical address translation
	macros.

2001-01-15  Jesper Skov  <jskov@redhat.com>

	* src/if_i82559.c: Handle endian differences between controller
	and CPU. Leave usdelay to HAL. Hack around PCI-base-at-0
	assumption.
	Increase SK_DELAY (not that it changed anything, but now it's to
	the spec), hardwire static ESA.
	
2001-01-12  Jesper Skov  <jskov@redhat.com>

	* src/if_i82559.c (pci_init_find_82559s): Check that device has
	been found before accessing it. 
	(pci_init_find_82559s): Only delay if devices were
	found. Recognize 82559ER code as well.

2001-01-10  Jesper Skov  <jskov@redhat.com>
	
	* src/if_i82559.c: Minor hacks to get it to build.
	* include/i82559_info.h: Same.
	* cdl/intel_i82559_eth_drivers.cdl: Same.

2000-12-07  Jesper Skov  <jskov@redhat.com>

	* cdl/intel_i82559_eth_drivers.cdl: Cloned from the EBSA driver.
	* include/i82559_info.h: Same.
	* src/if_i82559.c: Same.

2000-11-19  Gary Thomas  <gthomas@redhat.com>

	* src/if_ebsa285.c (pci_init_find_82559s): Intel has at least
	two devices equivalent to the 82559.  Support both (0x1229, 0x01030).

2000-10-05  Hugo Tyson  <hmt@redhat.com>

	* src/if_ebsa285.c: Deal with device interrupts in a nested
	fashion - disable/restore is the semantics now, rather than
	unconditionally unmasking.  Also go directly to the 21285 PIC's
	interrupt control registers to gain atomicity for these.  Poll for
	ready received packets when acknowledging an interrupt in the
	tranmitting world; a race here could lose an Rx interrupt.  Which
	doesn't matter on a busy system, but in quieter times...  there
	will always be such a race because of the vague way the i82559's
	status bits reflect how it's yanking the interrupt line; you have
	to poll until the interrupt is gone before returning else spurious
	interrupt failures occur.  The issue is to close the window as
	tightly as possible, which this change achieves at a minor cost in
	performance - because of the time spent polling when not required.

2000-09-11  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/if_ebsa285.c (i82559_poll): Only diddle the interface we
	were asked to.  This is more correct in terms of the intent of the
	API, though it shouldn't really be necessary.

2000-09-06  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/if_ebsa285.c (pci_init_find_82559s): Add asserts and an
	unconditional check that the PCI window as configured matches the
	address and size of the pci_window region from the MLT.  This is
	here because at present the MLT and CT cannot intercommunicate
	enough.  The separation of the PCI window is needed because
	otherwise the malloc heap will eat all memory.  [This is related
	to CR 902624-CR, "MLT needs to be configuration aware"]

2000-09-01  Hugo Tyson  <hmt@cygnus.co.uk>

	* OVERVIEW: This is part of the change to the network stack to
	greatly reduce latencies both of (other) DSRs and of thread
	scheduling.  All the work that the network stack *and* individual
	ether drivers used to do in DSRs (including alarm callbacks and
	data copies to/from the device memory) is moved into a "fast
	network thread" instead.  It calls a device's "deliver" function
	to do the work that was previously in the DSR.  This is a separate
	thread so that it can be set higher priority than application
	threads in order to minimize packet loss (depending on the
	driver), if required (the application threads presumed to be
	higher priority in turn than the network thread).  A crucial
	consequence of this is that we are no longer locking against DSRs,
	so a plain mutex can be used rather than the global scheduler
	lock, thus simplifying all the splfoo/splx() style functions.

	* src/if_ebsa285.c: Minor: fix the big assert in i82559_send()
	which suffered a race condition when called from the fast thread
	rather than from a DSR.  Major: Add a "deliver" entry to the
	interface record for the "fast thread" implementation of the
	network internal comms system.  Provide a pass-up DSR to the
	logical ether driver's DSR and appropriate delivery routine(s).
	i82559_poll() now calls i82559_deliver() rather than the DSR.  Add
	valid data for mux'd DSR to pass on up.

2000-09-01  Hugo Tyson  <hmt@cygnus.co.uk>

	* tests/test_net_realtime.h: Tighten up the latency requirements
	by a factor of 5; it all seems happy, so committed.

2000-08-25  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/if_ebsa285.c (i82559_ioctl): A little further diddling; have
	a bool to say whether the dot3 info is filled in.

2000-08-24  Hugo Tyson  <hmt@cygnus.co.uk>

	* cdl/ebsa285_eth_drivers.cdl: Do not export a symbol for the
	device info file (include/ebsa285_info.h) since nobody needs
	(portably) to include it now.

	* src/if_ebsa285.c (i82559_ioctl): Handle new ioctl calls
	ETH_DRV_GET_IF_STATS_UD and ETH_DRV_GET_IF_STATS to get loads of
	statistical information out.  _UD means update.  The nonUD one can
	be used instead mostly, if we find the performance hit too large.
	This should allow SNMP (a) to not explode, (b) to get useful info
	out of other device implementations than this one.

	* include/ebsa285_info.h: Remove all the macro cruft for feature
	detecting of lots of individual statistics; we now just have a
	catch-all struct that SNMP uses, defined in the common ether
	driver environment.

2000-08-15  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/if_ebsa285.c (PacketRxReady): Put back the check for very
	small packets into the driver; the layer above checks for that
	(defensive programming) but only *after* asserting that the size
	is large enough, to help detect that scenario from other drivers.
	I believe we only have struct ether_header available if CYGPKG_NET
	but I could be wrong.
	[CASE 104353]

2000-08-08  Hugo Tyson  <hmt@cygnus.co.uk>

	* src/if_ebsa285.c (eth_set_promiscuous_mode):
	- ccs->config_bytes[18]=0x70;
	+ ccs->config_bytes[18]=0x72; // Keep the Padding Enable bit
	...otherwise short frame sends don't work in promisc mode.
	[CASE 104289]

⌨️ 快捷键说明

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