138 u32 bytes_to_write, free_write_space,
timeout, curr_srp, curr_swp;
139 u32 new_swp, space_rem;
155 if (msg->
size > dev->
bus.m_wMaxReqSize) {
161 if ((msg->
size > 0) && (buf ==
NULL)) {
169 bytes_to_write =
sizeof(*msg) + msg->
size;
170 free_write_space = 0;
176 if (curr_srp > curr_swp)
178 free_write_space = curr_srp - curr_swp;
193 while (bytes_to_write >= free_write_space) {
195 if (timeout-- == 0) {
209 if (curr_srp > curr_swp)
211 free_write_space = curr_srp - curr_swp;
220 new_swp = curr_swp + bytes_to_write;
242 if (space_rem <
sizeof(*msg)) {
248 sizeof(*msg) - space_rem);
253 }
else if (space_rem ==
sizeof(*msg)) {
265 sizeof(*msg), buf, space_rem -
268 space_rem -
sizeof(*msg),
269 bytes_to_write - space_rem);
308 void *
buf,
int peekonly)
311 u32 bytes_to_read, write_distance, curr_grp, curr_gwp,
321 if (msg->
size > dev->
bus.m_wMaxReqSize) {
327 if ((peekonly == 0) && (msg->
size > 0) && (buf ==
NULL)) {
329 "%s() Missing msg buf, size should be %d bytes\n",
330 __func__, msg->
size);
342 if (curr_gwp == curr_grp) {
347 bytes_to_read =
sizeof(*msg);
351 if (curr_gwp >= curr_grp)
353 write_distance = curr_gwp - curr_grp;
358 if (bytes_to_read > write_distance) {
365 new_grp = curr_grp + bytes_to_read;
374 bytes_to_read - space_rem);
384 memcpy(msg, &msg_tmp,
sizeof(*msg));
401 buf_size = msg->
size;
403 bytes_to_read =
sizeof(*msg) + msg->
size;
406 if (curr_gwp >= curr_grp)
408 write_distance = curr_gwp - curr_grp;
413 if (bytes_to_read > write_distance) {
415 "or mangled ring, faulty H/W / bad code?\n", __func__);
421 new_grp = curr_grp + bytes_to_read;
428 if (space_rem <
sizeof(*msg)) {
432 sizeof(*msg) - space_rem);
435 space_rem, buf_size);
437 }
else if (space_rem ==
sizeof(*msg)) {
446 sizeof(*msg), space_rem -
sizeof(*msg));
447 memcpy(buf + space_rem -
sizeof(*msg),