* 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
