| * commit 7c734359d350 ("qlge: Size RX buffers based on MTU.", v2.6.33-rc1) | 
|   introduced dead code in the receive routines, which should be rewritten | 
|   anyways by the admission of the author himself, see the comment above | 
|   ql_build_rx_skb(). That function is now used exclusively to handle packets | 
|   that underwent header splitting but it still contains code to handle non | 
|   split cases. | 
| * truesize accounting is incorrect (ex: a 9000B frame has skb->truesize 10280 | 
|   while containing two frags of order-1 allocations, ie. >16K) | 
| * while in that area, using two 8k buffers to store one 9k frame is a poor | 
|   choice of buffer size. | 
| * in the "chain of large buffers" case, the driver uses an skb allocated with | 
|   head room but only puts data in the frags. | 
| * rename "rx" queues to "completion" queues. Calling tx completion queues "rx | 
|   queues" is confusing. | 
| * struct rx_ring is used for rx and tx completions, with some members relevant | 
|   to one case only | 
| * there is an inordinate amount of disparate debugging code, most of which is | 
|   of questionable value. In particular, qlge_dbg.c has hundreds of lines of | 
|   code bitrotting away in ifdef land (doesn't compile since commit | 
|   18c49b91777c ("qlge: do vlan cleanup", v3.1-rc1), 8 years ago). | 
| * triggering an ethtool regdump will hexdump a 176k struct to dmesg depending | 
|   on some module parameters. | 
| * the flow control implementation in firmware is buggy (sends a flood of pause | 
|   frames, resets the link, device and driver buffer queues become | 
|   desynchronized), disable it by default | 
| * some structures are initialized redundantly (ex. memset 0 after | 
|   alloc_etherdev()) | 
| * the driver has a habit of using runtime checks where compile time checks are | 
|   possible (ex. ql_free_rx_buffers(), ql_alloc_rx_buffers()) | 
| * reorder struct members to avoid holes if it doesn't impact performance | 
| * in terms of namespace, the driver uses either qlge_, ql_ (used by | 
|   other qlogic drivers, with clashes, ex: ql_sem_spinlock) or nothing (with | 
|   clashes, ex: struct ob_mac_iocb_req). Rename everything to use the "qlge_" | 
|   prefix. | 
| * avoid legacy/deprecated apis (ex. replace pci_dma_*, replace pci_enable_msi, | 
|   use pci_iomap) | 
| * some "while" loops could be rewritten with simple "for", ex. | 
|   ql_wait_reg_rdy(), ql_start_rx_ring()) | 
| * remove duplicate and useless comments | 
| * fix weird line wrapping (all over, ex. the ql_set_routing_reg() calls in | 
|   qlge_set_multicast_list()). | 
| * fix weird indentation (all over, ex. the for loops in qlge_get_stats()) | 
| * fix checkpatch issues |