161 isle->isle_nbytes = new_current_isle->isle_nbytes;
162 #ifdef DEBUG_OOO_CQE
163 isle->dedicated_cid = new_current_isle->dedicated_cid;
164 isle->recent_ooo_combined_cqe = new_current_isle->recent_ooo_combined_cqe;
165 #endif
166 isle = new_current_isle;
167 new_current_isle = &gen_info->first_isle;
168 }
169 mm_mem_zero(&isle->isle_gen_bufs_list_head, sizeof(lm_isle_t) - sizeof(d_list_entry_t));
170 isle->isle_link.next = isle->isle_link.prev = NULL;
171 }
172 gen_info->current_isle = new_current_isle;
173 gen_info->current_isle_number = new_current_isle_num;
174 return nbytes;
175 }
176
177 u32_t lm_tcp_rx_peninsula_to_rq(lm_device_t * pdev, lm_tcp_state_t * tcp, u32_t max_num_bytes_to_copy, u8_t sb_idx);
178
179 /* TODO: remove this temporary solution for solaris / linux compilation conflict, linux needs the
180 * first option, solaris the latter */
181 #if defined(__LINUX)
182 #define TOE_RX_INIT_ZERO {{0}}
183 #else
184 #define TOE_RX_INIT_ZERO {0}
185 #endif
186
187 #define TOE_RX_DOORBELL(pdev,cid) do{\
188 struct doorbell db = TOE_RX_INIT_ZERO;\
189 db.header.data |= ((TOE_CONNECTION_TYPE << DOORBELL_HDR_T_CONN_TYPE_SHIFT) |\
190 (DOORBELL_HDR_T_RX << DOORBELL_HDR_T_RX_SHIFT));\
191 DOORBELL((pdev), (cid), *((u32_t *)&db));\
192 } while(0)
193
194 static __inline void lm_tcp_rx_write_db(
195 lm_device_t *pdev,
196 lm_tcp_state_t *tcp
197 )
198 {
199 lm_tcp_con_t *rx_con = tcp->rx_con;
200 volatile struct toe_rx_db_data *db_data = rx_con->db_data.rx;
201
|
161 isle->isle_nbytes = new_current_isle->isle_nbytes;
162 #ifdef DEBUG_OOO_CQE
163 isle->dedicated_cid = new_current_isle->dedicated_cid;
164 isle->recent_ooo_combined_cqe = new_current_isle->recent_ooo_combined_cqe;
165 #endif
166 isle = new_current_isle;
167 new_current_isle = &gen_info->first_isle;
168 }
169 mm_mem_zero(&isle->isle_gen_bufs_list_head, sizeof(lm_isle_t) - sizeof(d_list_entry_t));
170 isle->isle_link.next = isle->isle_link.prev = NULL;
171 }
172 gen_info->current_isle = new_current_isle;
173 gen_info->current_isle_number = new_current_isle_num;
174 return nbytes;
175 }
176
177 u32_t lm_tcp_rx_peninsula_to_rq(lm_device_t * pdev, lm_tcp_state_t * tcp, u32_t max_num_bytes_to_copy, u8_t sb_idx);
178
179 /* TODO: remove this temporary solution for solaris / linux compilation conflict, linux needs the
180 * first option, solaris the latter */
181 #if defined(__LINUX) || defined(__LITTLE_ENDIAN)
182 #define TOE_RX_INIT_ZERO {{0}}
183 #else
184 #define TOE_RX_INIT_ZERO {0}
185 #endif
186
187 #define TOE_RX_DOORBELL(pdev,cid) do{\
188 struct doorbell db = TOE_RX_INIT_ZERO;\
189 db.header.data |= ((TOE_CONNECTION_TYPE << DOORBELL_HDR_T_CONN_TYPE_SHIFT) |\
190 (DOORBELL_HDR_T_RX << DOORBELL_HDR_T_RX_SHIFT));\
191 DOORBELL((pdev), (cid), *((u32_t *)&db));\
192 } while(0)
193
194 static __inline void lm_tcp_rx_write_db(
195 lm_device_t *pdev,
196 lm_tcp_state_t *tcp
197 )
198 {
199 lm_tcp_con_t *rx_con = tcp->rx_con;
200 volatile struct toe_rx_db_data *db_data = rx_con->db_data.rx;
201
|