* reception stalls permanently (until admin intervention) if the rx buffer
  queues become empty because of allocation failures (ex. under memory
  pressure)
* 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
