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) |
---|