mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-17 10:26:15 +00:00
Correct the maxsize and maxsegsz parameters for the
bus_dma_tag_create() calls. Without this, fxp(4) + PAE would consume insane amounts of bounce pages.
This commit is contained in:
parent
a3b3689ff3
commit
d73e2e5593
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=113231
@ -368,7 +368,7 @@ fxp_attach(device_t dev)
|
|||||||
struct fxp_rx *rxp;
|
struct fxp_rx *rxp;
|
||||||
u_int32_t val;
|
u_int32_t val;
|
||||||
u_int16_t data, myea[ETHER_ADDR_LEN / 2];
|
u_int16_t data, myea[ETHER_ADDR_LEN / 2];
|
||||||
int i, rid, m1, m2, prefer_iomap;
|
int i, rid, m1, m2, prefer_iomap, maxtxseg;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
bzero(sc, sizeof(*sc));
|
bzero(sc, sizeof(*sc));
|
||||||
@ -586,10 +586,10 @@ fxp_attach(device_t dev)
|
|||||||
/*
|
/*
|
||||||
* Allocate DMA tags and DMA safe memory.
|
* Allocate DMA tags and DMA safe memory.
|
||||||
*/
|
*/
|
||||||
|
maxtxseg = sc->flags & FXP_FLAG_EXT_RFA ? FXP_NTXSEG - 1 : FXP_NTXSEG;
|
||||||
error = bus_dma_tag_create(NULL, 2, 0, BUS_SPACE_MAXADDR_32BIT,
|
error = bus_dma_tag_create(NULL, 2, 0, BUS_SPACE_MAXADDR_32BIT,
|
||||||
BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES,
|
BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES * maxtxseg,
|
||||||
sc->flags & FXP_FLAG_EXT_RFA ? FXP_NTXSEG - 1 : FXP_NTXSEG,
|
maxtxseg, MCLBYTES, 0, &sc->fxp_mtag);
|
||||||
BUS_SPACE_MAXSIZE_32BIT, 0, &sc->fxp_mtag);
|
|
||||||
if (error) {
|
if (error) {
|
||||||
device_printf(dev, "could not allocate dma tag\n");
|
device_printf(dev, "could not allocate dma tag\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -597,7 +597,7 @@ fxp_attach(device_t dev)
|
|||||||
|
|
||||||
error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT,
|
error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT,
|
||||||
BUS_SPACE_MAXADDR, NULL, NULL, sizeof(struct fxp_stats), 1,
|
BUS_SPACE_MAXADDR, NULL, NULL, sizeof(struct fxp_stats), 1,
|
||||||
BUS_SPACE_MAXSIZE_32BIT, 0, &sc->fxp_stag);
|
sizeof(struct fxp_stats), 0, &sc->fxp_stag);
|
||||||
if (error) {
|
if (error) {
|
||||||
device_printf(dev, "could not allocate dma tag\n");
|
device_printf(dev, "could not allocate dma tag\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -617,7 +617,7 @@ fxp_attach(device_t dev)
|
|||||||
|
|
||||||
error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT,
|
error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT,
|
||||||
BUS_SPACE_MAXADDR, NULL, NULL, FXP_TXCB_SZ, 1,
|
BUS_SPACE_MAXADDR, NULL, NULL, FXP_TXCB_SZ, 1,
|
||||||
BUS_SPACE_MAXSIZE_32BIT, 0, &sc->cbl_tag);
|
FXP_TXCB_SZ, 0, &sc->cbl_tag);
|
||||||
if (error) {
|
if (error) {
|
||||||
device_printf(dev, "could not allocate dma tag\n");
|
device_printf(dev, "could not allocate dma tag\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -639,7 +639,7 @@ fxp_attach(device_t dev)
|
|||||||
|
|
||||||
error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT,
|
error = bus_dma_tag_create(NULL, 4, 0, BUS_SPACE_MAXADDR_32BIT,
|
||||||
BUS_SPACE_MAXADDR, NULL, NULL, sizeof(struct fxp_cb_mcs), 1,
|
BUS_SPACE_MAXADDR, NULL, NULL, sizeof(struct fxp_cb_mcs), 1,
|
||||||
BUS_SPACE_MAXSIZE_32BIT, 0, &sc->mcs_tag);
|
sizeof(struct fxp_cb_mcs), 0, &sc->mcs_tag);
|
||||||
if (error) {
|
if (error) {
|
||||||
device_printf(dev, "could not allocate dma tag\n");
|
device_printf(dev, "could not allocate dma tag\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
|
Loading…
Reference in New Issue
Block a user