diff options
author | Rasesh Mody <rmody@brocade.com> | 2012-12-11 07:24:51 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-12-11 18:25:47 -0500 |
commit | 5216562a2ccd037d0eb85a2e8bbfd6315e3f1bb5 (patch) | |
tree | 6c22d90daca6d7684f97fdbe331ced936569beaa /drivers/net/ethernet/brocade/bna/bna_tx_rx.c | |
parent | 5e46631fdb1e5611969c1e61106a59a3b38af078 (diff) |
bna: Tx and Rx Optimizations
Change details:
- Have contiguous queue pages for TxQ, RxQ and CQ. Data structure and
QPT changes related to contiguous queue pages
- Optimized Tx and Rx unmap structures. Tx and Rx fast path changes due to
unmap data structure changes
- Re-factored Tx and Rx fastpath routines as per the new queue data structures
- Implemented bnad_txq_wi_prepare() to program the opcode, flags, frame_len
and num_vectors in the work item
- Reduced Max TxQ and RxQ depth to 2048 while default value for Tx/Rx queue
depth is unaltered (512)
Signed-off-by: Rasesh Mody <rmody@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/brocade/bna/bna_tx_rx.c')
-rw-r--r-- | drivers/net/ethernet/brocade/bna/bna_tx_rx.c | 109 |
1 files changed, 62 insertions, 47 deletions
diff --git a/drivers/net/ethernet/brocade/bna/bna_tx_rx.c b/drivers/net/ethernet/brocade/bna/bna_tx_rx.c index 71144b396e02..bb5467bd3090 100644 --- a/drivers/net/ethernet/brocade/bna/bna_tx_rx.c +++ b/drivers/net/ethernet/brocade/bna/bna_tx_rx.c | |||
@@ -1908,6 +1908,9 @@ bna_rxq_qpt_setup(struct bna_rxq *rxq, | |||
1908 | struct bna_mem_descr *swqpt_mem, | 1908 | struct bna_mem_descr *swqpt_mem, |
1909 | struct bna_mem_descr *page_mem) | 1909 | struct bna_mem_descr *page_mem) |
1910 | { | 1910 | { |
1911 | u8 *kva; | ||
1912 | u64 dma; | ||
1913 | struct bna_dma_addr bna_dma; | ||
1911 | int i; | 1914 | int i; |
1912 | 1915 | ||
1913 | rxq->qpt.hw_qpt_ptr.lsb = qpt_mem->dma.lsb; | 1916 | rxq->qpt.hw_qpt_ptr.lsb = qpt_mem->dma.lsb; |
@@ -1917,13 +1920,21 @@ bna_rxq_qpt_setup(struct bna_rxq *rxq, | |||
1917 | rxq->qpt.page_size = page_size; | 1920 | rxq->qpt.page_size = page_size; |
1918 | 1921 | ||
1919 | rxq->rcb->sw_qpt = (void **) swqpt_mem->kva; | 1922 | rxq->rcb->sw_qpt = (void **) swqpt_mem->kva; |
1923 | rxq->rcb->sw_q = page_mem->kva; | ||
1924 | |||
1925 | kva = page_mem->kva; | ||
1926 | BNA_GET_DMA_ADDR(&page_mem->dma, dma); | ||
1920 | 1927 | ||
1921 | for (i = 0; i < rxq->qpt.page_count; i++) { | 1928 | for (i = 0; i < rxq->qpt.page_count; i++) { |
1922 | rxq->rcb->sw_qpt[i] = page_mem[i].kva; | 1929 | rxq->rcb->sw_qpt[i] = kva; |
1930 | kva += PAGE_SIZE; | ||
1931 | |||
1932 | BNA_SET_DMA_ADDR(dma, &bna_dma); | ||
1923 | ((struct bna_dma_addr *)rxq->qpt.kv_qpt_ptr)[i].lsb = | 1933 | ((struct bna_dma_addr *)rxq->qpt.kv_qpt_ptr)[i].lsb = |
1924 | page_mem[i].dma.lsb; | 1934 | bna_dma.lsb; |
1925 | ((struct bna_dma_addr *)rxq->qpt.kv_qpt_ptr)[i].msb = | 1935 | ((struct bna_dma_addr *)rxq->qpt.kv_qpt_ptr)[i].msb = |
1926 | page_mem[i].dma.msb; | 1936 | bna_dma.msb; |
1937 | dma += PAGE_SIZE; | ||
1927 | } | 1938 | } |
1928 | } | 1939 | } |
1929 | 1940 | ||
@@ -1935,6 +1946,9 @@ bna_rxp_cqpt_setup(struct bna_rxp *rxp, | |||
1935 | struct bna_mem_descr *swqpt_mem, | 1946 | struct bna_mem_descr *swqpt_mem, |
1936 | struct bna_mem_descr *page_mem) | 1947 | struct bna_mem_descr *page_mem) |
1937 | { | 1948 | { |
1949 | u8 *kva; | ||
1950 | u64 dma; | ||
1951 | struct bna_dma_addr bna_dma; | ||
1938 | int i; | 1952 | int i; |
1939 | 1953 | ||
1940 | rxp->cq.qpt.hw_qpt_ptr.lsb = qpt_mem->dma.lsb; | 1954 | rxp->cq.qpt.hw_qpt_ptr.lsb = qpt_mem->dma.lsb; |
@@ -1944,14 +1958,21 @@ bna_rxp_cqpt_setup(struct bna_rxp *rxp, | |||
1944 | rxp->cq.qpt.page_size = page_size; | 1958 | rxp->cq.qpt.page_size = page_size; |
1945 | 1959 | ||
1946 | rxp->cq.ccb->sw_qpt = (void **) swqpt_mem->kva; | 1960 | rxp->cq.ccb->sw_qpt = (void **) swqpt_mem->kva; |
1961 | rxp->cq.ccb->sw_q = page_mem->kva; | ||
1962 | |||
1963 | kva = page_mem->kva; | ||
1964 | BNA_GET_DMA_ADDR(&page_mem->dma, dma); | ||
1947 | 1965 | ||
1948 | for (i = 0; i < rxp->cq.qpt.page_count; i++) { | 1966 | for (i = 0; i < rxp->cq.qpt.page_count; i++) { |
1949 | rxp->cq.ccb->sw_qpt[i] = page_mem[i].kva; | 1967 | rxp->cq.ccb->sw_qpt[i] = kva; |
1968 | kva += PAGE_SIZE; | ||
1950 | 1969 | ||
1970 | BNA_SET_DMA_ADDR(dma, &bna_dma); | ||
1951 | ((struct bna_dma_addr *)rxp->cq.qpt.kv_qpt_ptr)[i].lsb = | 1971 | ((struct bna_dma_addr *)rxp->cq.qpt.kv_qpt_ptr)[i].lsb = |
1952 | page_mem[i].dma.lsb; | 1972 | bna_dma.lsb; |
1953 | ((struct bna_dma_addr *)rxp->cq.qpt.kv_qpt_ptr)[i].msb = | 1973 | ((struct bna_dma_addr *)rxp->cq.qpt.kv_qpt_ptr)[i].msb = |
1954 | page_mem[i].dma.msb; | 1974 | bna_dma.msb; |
1975 | dma += PAGE_SIZE; | ||
1955 | } | 1976 | } |
1956 | } | 1977 | } |
1957 | 1978 | ||
@@ -2250,8 +2271,8 @@ bna_rx_res_req(struct bna_rx_config *q_cfg, struct bna_res_info *res_info) | |||
2250 | res_info[BNA_RX_RES_MEM_T_CQPT_PAGE].res_type = BNA_RES_T_MEM; | 2271 | res_info[BNA_RX_RES_MEM_T_CQPT_PAGE].res_type = BNA_RES_T_MEM; |
2251 | mem_info = &res_info[BNA_RX_RES_MEM_T_CQPT_PAGE].res_u.mem_info; | 2272 | mem_info = &res_info[BNA_RX_RES_MEM_T_CQPT_PAGE].res_u.mem_info; |
2252 | mem_info->mem_type = BNA_MEM_T_DMA; | 2273 | mem_info->mem_type = BNA_MEM_T_DMA; |
2253 | mem_info->len = PAGE_SIZE; | 2274 | mem_info->len = PAGE_SIZE * cpage_count; |
2254 | mem_info->num = cpage_count * q_cfg->num_paths; | 2275 | mem_info->num = q_cfg->num_paths; |
2255 | 2276 | ||
2256 | res_info[BNA_RX_RES_MEM_T_DQPT].res_type = BNA_RES_T_MEM; | 2277 | res_info[BNA_RX_RES_MEM_T_DQPT].res_type = BNA_RES_T_MEM; |
2257 | mem_info = &res_info[BNA_RX_RES_MEM_T_DQPT].res_u.mem_info; | 2278 | mem_info = &res_info[BNA_RX_RES_MEM_T_DQPT].res_u.mem_info; |
@@ -2268,8 +2289,8 @@ bna_rx_res_req(struct bna_rx_config *q_cfg, struct bna_res_info *res_info) | |||
2268 | res_info[BNA_RX_RES_MEM_T_DPAGE].res_type = BNA_RES_T_MEM; | 2289 | res_info[BNA_RX_RES_MEM_T_DPAGE].res_type = BNA_RES_T_MEM; |
2269 | mem_info = &res_info[BNA_RX_RES_MEM_T_DPAGE].res_u.mem_info; | 2290 | mem_info = &res_info[BNA_RX_RES_MEM_T_DPAGE].res_u.mem_info; |
2270 | mem_info->mem_type = BNA_MEM_T_DMA; | 2291 | mem_info->mem_type = BNA_MEM_T_DMA; |
2271 | mem_info->len = PAGE_SIZE; | 2292 | mem_info->len = PAGE_SIZE * dpage_count; |
2272 | mem_info->num = dpage_count * q_cfg->num_paths; | 2293 | mem_info->num = q_cfg->num_paths; |
2273 | 2294 | ||
2274 | res_info[BNA_RX_RES_MEM_T_HQPT].res_type = BNA_RES_T_MEM; | 2295 | res_info[BNA_RX_RES_MEM_T_HQPT].res_type = BNA_RES_T_MEM; |
2275 | mem_info = &res_info[BNA_RX_RES_MEM_T_HQPT].res_u.mem_info; | 2296 | mem_info = &res_info[BNA_RX_RES_MEM_T_HQPT].res_u.mem_info; |
@@ -2286,8 +2307,8 @@ bna_rx_res_req(struct bna_rx_config *q_cfg, struct bna_res_info *res_info) | |||
2286 | res_info[BNA_RX_RES_MEM_T_HPAGE].res_type = BNA_RES_T_MEM; | 2307 | res_info[BNA_RX_RES_MEM_T_HPAGE].res_type = BNA_RES_T_MEM; |
2287 | mem_info = &res_info[BNA_RX_RES_MEM_T_HPAGE].res_u.mem_info; | 2308 | mem_info = &res_info[BNA_RX_RES_MEM_T_HPAGE].res_u.mem_info; |
2288 | mem_info->mem_type = BNA_MEM_T_DMA; | 2309 | mem_info->mem_type = BNA_MEM_T_DMA; |
2289 | mem_info->len = (hpage_count ? PAGE_SIZE : 0); | 2310 | mem_info->len = PAGE_SIZE * hpage_count; |
2290 | mem_info->num = (hpage_count ? (hpage_count * q_cfg->num_paths) : 0); | 2311 | mem_info->num = (hpage_count ? q_cfg->num_paths : 0); |
2291 | 2312 | ||
2292 | res_info[BNA_RX_RES_MEM_T_IBIDX].res_type = BNA_RES_T_MEM; | 2313 | res_info[BNA_RX_RES_MEM_T_IBIDX].res_type = BNA_RES_T_MEM; |
2293 | mem_info = &res_info[BNA_RX_RES_MEM_T_IBIDX].res_u.mem_info; | 2314 | mem_info = &res_info[BNA_RX_RES_MEM_T_IBIDX].res_u.mem_info; |
@@ -2332,7 +2353,7 @@ bna_rx_create(struct bna *bna, struct bnad *bnad, | |||
2332 | struct bna_mem_descr *dsqpt_mem; | 2353 | struct bna_mem_descr *dsqpt_mem; |
2333 | struct bna_mem_descr *hpage_mem; | 2354 | struct bna_mem_descr *hpage_mem; |
2334 | struct bna_mem_descr *dpage_mem; | 2355 | struct bna_mem_descr *dpage_mem; |
2335 | int i, cpage_idx = 0, dpage_idx = 0, hpage_idx = 0; | 2356 | int i; |
2336 | int dpage_count, hpage_count, rcb_idx; | 2357 | int dpage_count, hpage_count, rcb_idx; |
2337 | 2358 | ||
2338 | if (!bna_rx_res_check(rx_mod, rx_cfg)) | 2359 | if (!bna_rx_res_check(rx_mod, rx_cfg)) |
@@ -2352,14 +2373,14 @@ bna_rx_create(struct bna *bna, struct bnad *bnad, | |||
2352 | hpage_mem = &res_info[BNA_RX_RES_MEM_T_HPAGE].res_u.mem_info.mdl[0]; | 2373 | hpage_mem = &res_info[BNA_RX_RES_MEM_T_HPAGE].res_u.mem_info.mdl[0]; |
2353 | dpage_mem = &res_info[BNA_RX_RES_MEM_T_DPAGE].res_u.mem_info.mdl[0]; | 2374 | dpage_mem = &res_info[BNA_RX_RES_MEM_T_DPAGE].res_u.mem_info.mdl[0]; |
2354 | 2375 | ||
2355 | page_count = res_info[BNA_RX_RES_MEM_T_CQPT_PAGE].res_u.mem_info.num / | 2376 | page_count = res_info[BNA_RX_RES_MEM_T_CQPT_PAGE].res_u.mem_info.len / |
2356 | rx_cfg->num_paths; | 2377 | PAGE_SIZE; |
2357 | 2378 | ||
2358 | dpage_count = res_info[BNA_RX_RES_MEM_T_DPAGE].res_u.mem_info.num / | 2379 | dpage_count = res_info[BNA_RX_RES_MEM_T_DPAGE].res_u.mem_info.len / |
2359 | rx_cfg->num_paths; | 2380 | PAGE_SIZE; |
2360 | 2381 | ||
2361 | hpage_count = res_info[BNA_RX_RES_MEM_T_HPAGE].res_u.mem_info.num / | 2382 | hpage_count = res_info[BNA_RX_RES_MEM_T_HPAGE].res_u.mem_info.len / |
2362 | rx_cfg->num_paths; | 2383 | PAGE_SIZE; |
2363 | 2384 | ||
2364 | rx = bna_rx_get(rx_mod, rx_cfg->rx_type); | 2385 | rx = bna_rx_get(rx_mod, rx_cfg->rx_type); |
2365 | rx->bna = bna; | 2386 | rx->bna = bna; |
@@ -2446,10 +2467,7 @@ bna_rx_create(struct bna *bna, struct bnad *bnad, | |||
2446 | q0->rx_packets_with_error = q0->rxbuf_alloc_failed = 0; | 2467 | q0->rx_packets_with_error = q0->rxbuf_alloc_failed = 0; |
2447 | 2468 | ||
2448 | bna_rxq_qpt_setup(q0, rxp, dpage_count, PAGE_SIZE, | 2469 | bna_rxq_qpt_setup(q0, rxp, dpage_count, PAGE_SIZE, |
2449 | &dqpt_mem[i], &dsqpt_mem[i], &dpage_mem[dpage_idx]); | 2470 | &dqpt_mem[i], &dsqpt_mem[i], &dpage_mem[i]); |
2450 | q0->rcb->page_idx = dpage_idx; | ||
2451 | q0->rcb->page_count = dpage_count; | ||
2452 | dpage_idx += dpage_count; | ||
2453 | 2471 | ||
2454 | if (rx->rcb_setup_cbfn) | 2472 | if (rx->rcb_setup_cbfn) |
2455 | rx->rcb_setup_cbfn(bnad, q0->rcb); | 2473 | rx->rcb_setup_cbfn(bnad, q0->rcb); |
@@ -2475,10 +2493,7 @@ bna_rx_create(struct bna *bna, struct bnad *bnad, | |||
2475 | 2493 | ||
2476 | bna_rxq_qpt_setup(q1, rxp, hpage_count, PAGE_SIZE, | 2494 | bna_rxq_qpt_setup(q1, rxp, hpage_count, PAGE_SIZE, |
2477 | &hqpt_mem[i], &hsqpt_mem[i], | 2495 | &hqpt_mem[i], &hsqpt_mem[i], |
2478 | &hpage_mem[hpage_idx]); | 2496 | &hpage_mem[i]); |
2479 | q1->rcb->page_idx = hpage_idx; | ||
2480 | q1->rcb->page_count = hpage_count; | ||
2481 | hpage_idx += hpage_count; | ||
2482 | 2497 | ||
2483 | if (rx->rcb_setup_cbfn) | 2498 | if (rx->rcb_setup_cbfn) |
2484 | rx->rcb_setup_cbfn(bnad, q1->rcb); | 2499 | rx->rcb_setup_cbfn(bnad, q1->rcb); |
@@ -2510,10 +2525,7 @@ bna_rx_create(struct bna *bna, struct bnad *bnad, | |||
2510 | rxp->cq.ccb->id = i; | 2525 | rxp->cq.ccb->id = i; |
2511 | 2526 | ||
2512 | bna_rxp_cqpt_setup(rxp, page_count, PAGE_SIZE, | 2527 | bna_rxp_cqpt_setup(rxp, page_count, PAGE_SIZE, |
2513 | &cqpt_mem[i], &cswqpt_mem[i], &cpage_mem[cpage_idx]); | 2528 | &cqpt_mem[i], &cswqpt_mem[i], &cpage_mem[i]); |
2514 | rxp->cq.ccb->page_idx = cpage_idx; | ||
2515 | rxp->cq.ccb->page_count = page_count; | ||
2516 | cpage_idx += page_count; | ||
2517 | 2529 | ||
2518 | if (rx->ccb_setup_cbfn) | 2530 | if (rx->ccb_setup_cbfn) |
2519 | rx->ccb_setup_cbfn(bnad, rxp->cq.ccb); | 2531 | rx->ccb_setup_cbfn(bnad, rxp->cq.ccb); |
@@ -3230,6 +3242,9 @@ bna_txq_qpt_setup(struct bna_txq *txq, int page_count, int page_size, | |||
3230 | struct bna_mem_descr *swqpt_mem, | 3242 | struct bna_mem_descr *swqpt_mem, |
3231 | struct bna_mem_descr *page_mem) | 3243 | struct bna_mem_descr *page_mem) |
3232 | { | 3244 | { |
3245 | u8 *kva; | ||
3246 | u64 dma; | ||
3247 | struct bna_dma_addr bna_dma; | ||
3233 | int i; | 3248 | int i; |
3234 | 3249 | ||
3235 | txq->qpt.hw_qpt_ptr.lsb = qpt_mem->dma.lsb; | 3250 | txq->qpt.hw_qpt_ptr.lsb = qpt_mem->dma.lsb; |
@@ -3239,14 +3254,21 @@ bna_txq_qpt_setup(struct bna_txq *txq, int page_count, int page_size, | |||
3239 | txq->qpt.page_size = page_size; | 3254 | txq->qpt.page_size = page_size; |
3240 | 3255 | ||
3241 | txq->tcb->sw_qpt = (void **) swqpt_mem->kva; | 3256 | txq->tcb->sw_qpt = (void **) swqpt_mem->kva; |
3257 | txq->tcb->sw_q = page_mem->kva; | ||
3258 | |||
3259 | kva = page_mem->kva; | ||
3260 | BNA_GET_DMA_ADDR(&page_mem->dma, dma); | ||
3242 | 3261 | ||
3243 | for (i = 0; i < page_count; i++) { | 3262 | for (i = 0; i < page_count; i++) { |
3244 | txq->tcb->sw_qpt[i] = page_mem[i].kva; | 3263 | txq->tcb->sw_qpt[i] = kva; |
3264 | kva += PAGE_SIZE; | ||
3245 | 3265 | ||
3266 | BNA_SET_DMA_ADDR(dma, &bna_dma); | ||
3246 | ((struct bna_dma_addr *)txq->qpt.kv_qpt_ptr)[i].lsb = | 3267 | ((struct bna_dma_addr *)txq->qpt.kv_qpt_ptr)[i].lsb = |
3247 | page_mem[i].dma.lsb; | 3268 | bna_dma.lsb; |
3248 | ((struct bna_dma_addr *)txq->qpt.kv_qpt_ptr)[i].msb = | 3269 | ((struct bna_dma_addr *)txq->qpt.kv_qpt_ptr)[i].msb = |
3249 | page_mem[i].dma.msb; | 3270 | bna_dma.msb; |
3271 | dma += PAGE_SIZE; | ||
3250 | } | 3272 | } |
3251 | } | 3273 | } |
3252 | 3274 | ||
@@ -3430,8 +3452,8 @@ bna_tx_res_req(int num_txq, int txq_depth, struct bna_res_info *res_info) | |||
3430 | res_info[BNA_TX_RES_MEM_T_PAGE].res_type = BNA_RES_T_MEM; | 3452 | res_info[BNA_TX_RES_MEM_T_PAGE].res_type = BNA_RES_T_MEM; |
3431 | mem_info = &res_info[BNA_TX_RES_MEM_T_PAGE].res_u.mem_info; | 3453 | mem_info = &res_info[BNA_TX_RES_MEM_T_PAGE].res_u.mem_info; |
3432 | mem_info->mem_type = BNA_MEM_T_DMA; | 3454 | mem_info->mem_type = BNA_MEM_T_DMA; |
3433 | mem_info->len = PAGE_SIZE; | 3455 | mem_info->len = PAGE_SIZE * page_count; |
3434 | mem_info->num = num_txq * page_count; | 3456 | mem_info->num = num_txq; |
3435 | 3457 | ||
3436 | res_info[BNA_TX_RES_MEM_T_IBIDX].res_type = BNA_RES_T_MEM; | 3458 | res_info[BNA_TX_RES_MEM_T_IBIDX].res_type = BNA_RES_T_MEM; |
3437 | mem_info = &res_info[BNA_TX_RES_MEM_T_IBIDX].res_u.mem_info; | 3459 | mem_info = &res_info[BNA_TX_RES_MEM_T_IBIDX].res_u.mem_info; |
@@ -3457,14 +3479,11 @@ bna_tx_create(struct bna *bna, struct bnad *bnad, | |||
3457 | struct bna_txq *txq; | 3479 | struct bna_txq *txq; |
3458 | struct list_head *qe; | 3480 | struct list_head *qe; |
3459 | int page_count; | 3481 | int page_count; |
3460 | int page_size; | ||
3461 | int page_idx; | ||
3462 | int i; | 3482 | int i; |
3463 | 3483 | ||
3464 | intr_info = &res_info[BNA_TX_RES_INTR_T_TXCMPL].res_u.intr_info; | 3484 | intr_info = &res_info[BNA_TX_RES_INTR_T_TXCMPL].res_u.intr_info; |
3465 | page_count = (res_info[BNA_TX_RES_MEM_T_PAGE].res_u.mem_info.num) / | 3485 | page_count = (res_info[BNA_TX_RES_MEM_T_PAGE].res_u.mem_info.len) / |
3466 | tx_cfg->num_txq; | 3486 | PAGE_SIZE; |
3467 | page_size = res_info[BNA_TX_RES_MEM_T_PAGE].res_u.mem_info.len; | ||
3468 | 3487 | ||
3469 | /** | 3488 | /** |
3470 | * Get resources | 3489 | * Get resources |
@@ -3529,7 +3548,6 @@ bna_tx_create(struct bna *bna, struct bnad *bnad, | |||
3529 | /* TxQ */ | 3548 | /* TxQ */ |
3530 | 3549 | ||
3531 | i = 0; | 3550 | i = 0; |
3532 | page_idx = 0; | ||
3533 | list_for_each(qe, &tx->txq_q) { | 3551 | list_for_each(qe, &tx->txq_q) { |
3534 | txq = (struct bna_txq *)qe; | 3552 | txq = (struct bna_txq *)qe; |
3535 | txq->tcb = (struct bna_tcb *) | 3553 | txq->tcb = (struct bna_tcb *) |
@@ -3569,14 +3587,11 @@ bna_tx_create(struct bna *bna, struct bnad *bnad, | |||
3569 | txq->tcb->id = i; | 3587 | txq->tcb->id = i; |
3570 | 3588 | ||
3571 | /* QPT, SWQPT, Pages */ | 3589 | /* QPT, SWQPT, Pages */ |
3572 | bna_txq_qpt_setup(txq, page_count, page_size, | 3590 | bna_txq_qpt_setup(txq, page_count, PAGE_SIZE, |
3573 | &res_info[BNA_TX_RES_MEM_T_QPT].res_u.mem_info.mdl[i], | 3591 | &res_info[BNA_TX_RES_MEM_T_QPT].res_u.mem_info.mdl[i], |
3574 | &res_info[BNA_TX_RES_MEM_T_SWQPT].res_u.mem_info.mdl[i], | 3592 | &res_info[BNA_TX_RES_MEM_T_SWQPT].res_u.mem_info.mdl[i], |
3575 | &res_info[BNA_TX_RES_MEM_T_PAGE]. | 3593 | &res_info[BNA_TX_RES_MEM_T_PAGE]. |
3576 | res_u.mem_info.mdl[page_idx]); | 3594 | res_u.mem_info.mdl[i]); |
3577 | txq->tcb->page_idx = page_idx; | ||
3578 | txq->tcb->page_count = page_count; | ||
3579 | page_idx += page_count; | ||
3580 | 3595 | ||
3581 | /* Callback to bnad for setting up TCB */ | 3596 | /* Callback to bnad for setting up TCB */ |
3582 | if (tx->tcb_setup_cbfn) | 3597 | if (tx->tcb_setup_cbfn) |