Linux Device Drivers by Alessandro Rubini Unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. This page was updated August 15, 2003. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification UNCONFIRMED errors and comments from readers: [14] 1st paragram root#insmod hello.o; under kernel 2.2.15 and 2.4.1 it doesn't return message "Hello,world". rmmod hello doesn't return "Goodbye cruel world". I haven't tried it on other kernels yet. (27) 3rd paragraph (list); This looks like your pasteup: MOD_DEC_USE_COUNT .XET N .XE1 "MOD_DEC_USE_COUNT module" ./XET [321] at the bottom; it says in the errata from 6/00 that the driver has to set the skb->free=1 in its tx-handling method. When we do that in our project, we get serious problems with tcp. I have also "grep:ed" through the source code for ethernet drivers in the 2.0.38 kernel and only de620.c sets skb->free=1, no other driver does this. Also, your snull driver does not use skb->free=1 either. question: Is the errata (6/00) correct in this, i.e. should skb->free=1 in the tx method and if so, why do we get problems with tcp. [326] Description of field skb->len (midpoint of the page); It presently reads: unsigned long len; The length of the data itself (skb->tail - skb->head). It SHOULD read: unsigned long len; The length of the data itself (skb->tail - skb->data). [350] First code sample; Third code sample line reads: unsigned char *revision; Should be: unsigned char revision; [353] 2nd line of 2nd paragraph; Text currently reads as "is set if this is a memory region," and it should read as either "is set if this is a I/O region," or "is clear if this is a memory region,". (409) 3rd paragraph; Where it says: "void pci_sync_single(struct pci_dev *pdev, dma_handle_t bus_addr, size_t size, int direction);" it should say: "void pci_dma_sync_single(struct pci_dev *pdev, dma_handle_t bus_addr, size_t size, int direction);"