📄 changelog
字号:
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]2000-08-07 Gary Thomas <gthomas@redhat.com> * src/if_ebsa285.c (pciwindow_mem_alloc): Take out very noisy debug.2000-08-03 Gary Thomas <gthomas@redhat.com> * src/if_ebsa285.c: Changes for stand-alone mode. * cdl/ebsa285_eth_drivers.cdl: Ethernet driver package hierarchy changed. Add option to control number of interfaces.2000-07-28 Hugo Tyson <hmt@cygnus.co.uk> * src/if_ebsa285.c (PacketRxReady): Do not attempt to forward short packets; eth_drv.c assumes there is at least a header there. (i82559_recv): Also be more careful and ASSERTive about -ve buffer sizes; be more defensive about sglists. [CASE 104206]2000-07-26 Gary Thomas <gthomas@redhat.com> * src/if_ebsa285.c: Update for new eth_drv interfaces.2000-07-18 Hugo Tyson <hmt@cygnus.co.uk> * src/if_ebsa285.c (i82559_poll): Fill in the flesh of this, it just calls ISR and DSR repeatedly. (i82559_start): Look in the device record for promiscuous mode flag; it should be passed though the common layer, but it's not [yet] - this change from Andrew Lunn/ASCOM. Also a fix and delay to the promisc mode code per se.2000-07-17 Hugo Tyson <hmt@cygnus.co.uk> * src/if_ebsa285.c (i82559_poll): New function, just to fill in the interface record; not used.2000-06-27 Hugo Tyson <hmt@cygnus.co.uk> * cdl/ebsa285_eth_drivers.cdl: Add sesquipedalian option CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_82559_STATISTICS in (now) component CYGDBG_DEVS_ETH_ARM_EBSA285_KEEP_STATISTICS to control keeping (well, harvesting really) the i82559's internal stats. Reputedly, it doesn't service the net whilst this is happening, so it could be viewed a bad thing. Hence the option. * include/ebsa285_info.h: Only describe the I82559_COUNTERS i82559_counters[2]; structs if full stats are to be kept. * src/if_ebsa285.c (update_statistics): Only include this if full stats are to be kept.2000-06-27 Hugo Tyson <hmt@cygnus.co.uk> * src/if_ebsa285.c (ResetRxRing): Re-do the management of the RxRing; have an end-of-list flag (EL) in the last entry, and as you unload filled slots, drag it round after you.2000-06-14 Hugo Tyson <hmt@cygnus.co.uk> * cdl/ebsa285_eth_drivers.cdl: Add option to control statistics keeping. * include/ebsa285_info.h: Act on it.2000-06-13 Hugo Tyson <hmt@cygnus.co.uk> * cdl/ebsa285_eth_drivers.cdl: Properly include the new header file and define symbols to allow client code to get at it without knowing the particular device driver name. * include/ebsa285_info.h: New file: export various statistics information about the driver for use by monitoring and network-management systems. This requires exposing the (otherwise) internal structures of the driver. * src/if_ebsa285.c: remove a lot of structure definitions &c that are now necessarily in the new header; add a couple of new routines which provide status and update statistics from the device into memory; tidy up control of whether stats-keeping is enabled.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -