summaryrefslogtreecommitdiffstats
path: root/sys/dev/fxp/if_fxpreg.h
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2008-11-26 07:36:17 +0000
committeryongari <yongari@FreeBSD.org>2008-11-26 07:36:17 +0000
commit2e91108b5417794623aa9ff99469fa39c734ebee (patch)
tree7e1462b6416e56c0188b41bcca30fe887b3a5697 /sys/dev/fxp/if_fxpreg.h
parentfee7af0f4b62cc4581d450254b96822bef873dcb (diff)
downloadFreeBSD-src-2e91108b5417794623aa9ff99469fa39c734ebee.zip
FreeBSD-src-2e91108b5417794623aa9ff99469fa39c734ebee.tar.gz
Implement TSO for 82550/82551 controllers.
o Configure controller to use dynamic TBD as TSO requires that operation mode. o Add a dummy TBD to tx_cb_u as TSO can access one more TBD in TSO operation. o Increase a DMA segment size to 4096 to hold a full IP segment with link layer header. o Unlike other TSO capable controllers, 82550/82551 does not modify the first IP packet in TSO operation so driver should create an IP packet with proper header. Subsequent IP packets are generated from the header information in the first IP packet header. Likewise pseudo checksum also should be computed by driver for the first packet. o TSO requires one more TBD to hold total TCP payload. To make code simple for TSO/non-TSO case, increase the index of the first available TBD array. o Remove KASSERT that checks the size of a DMA segment should be less than or equal to MCLBYTES as it's no longer valid in TSO. o Tx threshold and number of TBDs field is used to store MSS in TSO. So don't set the Tx threshold in TSO case.
Diffstat (limited to 'sys/dev/fxp/if_fxpreg.h')
-rw-r--r--sys/dev/fxp/if_fxpreg.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/fxp/if_fxpreg.h b/sys/dev/fxp/if_fxpreg.h
index 26edfbd..982d2f0 100644
--- a/sys/dev/fxp/if_fxpreg.h
+++ b/sys/dev/fxp/if_fxpreg.h
@@ -292,7 +292,7 @@ struct fxp_cb_tx {
*/
union {
struct fxp_ipcb ipcb;
- struct fxp_tbd tbd[FXP_NTXSEG];
+ struct fxp_tbd tbd[FXP_NTXSEG + 1];
} tx_cb_u;
};
OpenPOWER on IntegriCloud