File: TODO

package info (click to toggle)
linux 6.1.148-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,496,492 kB
  • sloc: ansic: 23,474,232; asm: 266,624; sh: 110,569; makefile: 49,899; python: 36,948; perl: 36,834; cpp: 6,055; yacc: 4,908; lex: 2,725; awk: 1,440; ruby: 25; sed: 5
file content (33 lines) | stat: -rw-r--r-- 1,880 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
* 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
* 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
* 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