qls_isr.c (98e0ffaefb0f241cda3a72395d3be04192ae0d47) | qls_isr.c (6dd38b8716bd9c53029707749f00ced53c5ceb7c) |
---|---|
1/* 2 * Copyright (c) 2013-2014 Qlogic Corporation 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 218 unchanged lines hidden (view full) --- 227 228static void 229qls_cq_isr(qla_host_t *ha, uint32_t cq_idx) 230{ 231 q81_cq_e_t *cq_e, *cq_b; 232 uint32_t i, cq_comp_idx; 233 int ret = 0, tx_comp_done = 0; 234 struct lro_ctrl *lro; | 1/* 2 * Copyright (c) 2013-2014 Qlogic Corporation 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 218 unchanged lines hidden (view full) --- 227 228static void 229qls_cq_isr(qla_host_t *ha, uint32_t cq_idx) 230{ 231 q81_cq_e_t *cq_e, *cq_b; 232 uint32_t i, cq_comp_idx; 233 int ret = 0, tx_comp_done = 0; 234 struct lro_ctrl *lro; |
235 struct lro_entry *queued; | |
236 237 cq_b = ha->rx_ring[cq_idx].cq_base_vaddr; 238 lro = &ha->rx_ring[cq_idx].lro; 239 240 cq_comp_idx = *(ha->rx_ring[cq_idx].cqi_vaddr); 241 242 i = ha->rx_ring[cq_idx].cq_next; 243 --- 38 unchanged lines hidden (view full) --- 282 } 283 284 if (tx_comp_done) { 285 taskqueue_enqueue(ha->tx_tq, &ha->tx_task); 286 tx_comp_done = 0; 287 } 288 } 289 | 235 236 cq_b = ha->rx_ring[cq_idx].cq_base_vaddr; 237 lro = &ha->rx_ring[cq_idx].lro; 238 239 cq_comp_idx = *(ha->rx_ring[cq_idx].cqi_vaddr); 240 241 i = ha->rx_ring[cq_idx].cq_next; 242 --- 38 unchanged lines hidden (view full) --- 281 } 282 283 if (tx_comp_done) { 284 taskqueue_enqueue(ha->tx_tq, &ha->tx_task); 285 tx_comp_done = 0; 286 } 287 } 288 |
290 while((!SLIST_EMPTY(&lro->lro_active))) { 291 queued = SLIST_FIRST(&lro->lro_active); 292 SLIST_REMOVE_HEAD(&lro->lro_active, next); 293 tcp_lro_flush(lro, queued); 294 } | 289 tcp_lro_flush_all(lro); |
295 296 ha->rx_ring[cq_idx].cq_next = cq_comp_idx; 297 298 if (!ret) { 299 Q81_WR_CQ_CONS_IDX(cq_idx, (ha->rx_ring[cq_idx].cq_next)); 300 } 301 if (tx_comp_done) 302 taskqueue_enqueue(ha->tx_tq, &ha->tx_task); --- 99 unchanged lines hidden --- | 290 291 ha->rx_ring[cq_idx].cq_next = cq_comp_idx; 292 293 if (!ret) { 294 Q81_WR_CQ_CONS_IDX(cq_idx, (ha->rx_ring[cq_idx].cq_next)); 295 } 296 if (tx_comp_done) 297 taskqueue_enqueue(ha->tx_tq, &ha->tx_task); --- 99 unchanged lines hidden --- |