old mode 100644new mode 100755| .. | .. |
|---|
| 103 | 103 | #define CUSTOM_SDIO_F1_BLKSIZE DEFAULT_SDIO_F1_BLKSIZE |
|---|
| 104 | 104 | #endif |
|---|
| 105 | 105 | |
|---|
| 106 | | -#define COPY_BUF_SIZE (SDPCM_MAXGLOM_SIZE * 1600) |
|---|
| 107 | | - |
|---|
| 108 | 106 | #define MAX_IO_RW_EXTENDED_BLK 511 |
|---|
| 109 | 107 | |
|---|
| 110 | 108 | uint sd_sdmode = SDIOH_MODE_SD4; /* Use SD4 mode by default */ |
|---|
| .. | .. |
|---|
| 211 | 209 | return NULL; |
|---|
| 212 | 210 | } |
|---|
| 213 | 211 | bzero((char *)sd, sizeof(sdioh_info_t)); |
|---|
| 214 | | -#if defined(BCMSDIOH_TXGLOM) && defined(BCMSDIOH_STATIC_COPY_BUF) |
|---|
| 215 | | - sd->copy_buf = MALLOC(osh, COPY_BUF_SIZE); |
|---|
| 216 | | - if (sd->copy_buf == NULL) { |
|---|
| 217 | | - sd_err(("%s: MALLOC of %d-byte copy_buf failed\n", |
|---|
| 218 | | - __FUNCTION__, COPY_BUF_SIZE)); |
|---|
| 219 | | - goto fail; |
|---|
| 220 | | - } |
|---|
| 221 | | -#endif |
|---|
| 222 | 212 | sd->osh = osh; |
|---|
| 223 | 213 | sd->fake_func0.num = 0; |
|---|
| 224 | 214 | sd->fake_func0.card = func->card; |
|---|
| .. | .. |
|---|
| 283 | 273 | return sd; |
|---|
| 284 | 274 | |
|---|
| 285 | 275 | fail: |
|---|
| 286 | | -#if defined(BCMSDIOH_TXGLOM) && defined(BCMSDIOH_STATIC_COPY_BUF) |
|---|
| 287 | | - MFREE(sd->osh, sd->copy_buf, COPY_BUF_SIZE); |
|---|
| 288 | | -#endif |
|---|
| 289 | 276 | MFREE(sd->osh, sd, sizeof(sdioh_info_t)); |
|---|
| 290 | 277 | return NULL; |
|---|
| 291 | 278 | } |
|---|
| .. | .. |
|---|
| 314 | 301 | sd->func[1] = NULL; |
|---|
| 315 | 302 | sd->func[2] = NULL; |
|---|
| 316 | 303 | |
|---|
| 317 | | -#if defined(BCMSDIOH_TXGLOM) && defined(BCMSDIOH_STATIC_COPY_BUF) |
|---|
| 318 | | - MFREE(sd->osh, sd->copy_buf, COPY_BUF_SIZE); |
|---|
| 319 | | -#endif |
|---|
| 320 | 304 | MFREE(sd->osh, sd, sizeof(sdioh_info_t)); |
|---|
| 321 | 305 | } |
|---|
| 322 | 306 | return SDIOH_API_RC_SUCCESS; |
|---|
| .. | .. |
|---|
| 1372 | 1356 | return SDIOH_API_RC_FAIL; |
|---|
| 1373 | 1357 | } |
|---|
| 1374 | 1358 | } |
|---|
| 1375 | | - } |
|---|
| 1376 | | - else if(sd->txglom_mode == SDPCM_TXGLOM_CPY) { |
|---|
| 1359 | + } else if(sd->txglom_mode == SDPCM_TXGLOM_CPY) { |
|---|
| 1377 | 1360 | for (pnext = pkt; pnext; pnext = PKTNEXT(sd->osh, pnext)) { |
|---|
| 1378 | 1361 | ttl_len += PKTLEN(sd->osh, pnext); |
|---|
| 1379 | 1362 | } |
|---|
| .. | .. |
|---|
| 1382 | 1365 | for (pnext = pkt; pnext; pnext = PKTNEXT(sd->osh, pnext)) { |
|---|
| 1383 | 1366 | uint8 *buf = (uint8*)PKTDATA(sd->osh, pnext); |
|---|
| 1384 | 1367 | pkt_len = PKTLEN(sd->osh, pnext); |
|---|
| 1368 | + |
|---|
| 1385 | 1369 | if (!localbuf) { |
|---|
| 1386 | | -#ifdef BCMSDIOH_STATIC_COPY_BUF |
|---|
| 1387 | | - if (ttl_len <= COPY_BUF_SIZE) |
|---|
| 1388 | | - localbuf = sd->copy_buf; |
|---|
| 1389 | | -#else |
|---|
| 1390 | 1370 | localbuf = (uint8 *)MALLOC(sd->osh, ttl_len); |
|---|
| 1391 | | -#endif |
|---|
| 1392 | 1371 | if (localbuf == NULL) { |
|---|
| 1393 | | - sd_err(("%s: %s localbuf malloc FAILED ttl_len=%d\n", |
|---|
| 1394 | | - __FUNCTION__, (write) ? "TX" : "RX", ttl_len)); |
|---|
| 1395 | | - ttl_len -= pkt_len; |
|---|
| 1372 | + sd_err(("%s: %s TXGLOM: localbuf malloc FAILED\n", |
|---|
| 1373 | + __FUNCTION__, (write) ? "TX" : "RX")); |
|---|
| 1396 | 1374 | goto txglomfail; |
|---|
| 1397 | 1375 | } |
|---|
| 1398 | 1376 | } |
|---|
| 1377 | + |
|---|
| 1399 | 1378 | bcopy(buf, (localbuf + local_plen), pkt_len); |
|---|
| 1400 | 1379 | local_plen += pkt_len; |
|---|
| 1401 | 1380 | if (PKTNEXT(sd->osh, pnext)) |
|---|
| .. | .. |
|---|
| 1440 | 1419 | return SDIOH_API_RC_FAIL; |
|---|
| 1441 | 1420 | } |
|---|
| 1442 | 1421 | |
|---|
| 1443 | | -#ifndef BCMSDIOH_STATIC_COPY_BUF |
|---|
| 1444 | 1422 | if (localbuf) |
|---|
| 1445 | 1423 | MFREE(sd->osh, localbuf, ttl_len); |
|---|
| 1446 | | -#endif |
|---|
| 1447 | 1424 | |
|---|
| 1448 | 1425 | #ifndef PKT_STATICS |
|---|
| 1449 | 1426 | if (sd_msglevel & SDH_COST_VAL) |
|---|