|
@@ -1358,15 +1358,15 @@ static int iscsit_do_tx_data(
|
|
|
struct iscsi_conn *conn,
|
|
|
struct iscsi_data_count *count)
|
|
|
{
|
|
|
- int data = count->data_length, total_tx = 0, tx_loop = 0, iov_len;
|
|
|
+ int ret, iov_len;
|
|
|
struct kvec *iov_p;
|
|
|
struct msghdr msg;
|
|
|
|
|
|
if (!conn || !conn->sock || !conn->conn_ops)
|
|
|
return -1;
|
|
|
|
|
|
- if (data <= 0) {
|
|
|
- pr_err("Data length is: %d\n", data);
|
|
|
+ if (count->data_length <= 0) {
|
|
|
+ pr_err("Data length is: %d\n", count->data_length);
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
@@ -1375,20 +1375,16 @@ static int iscsit_do_tx_data(
|
|
|
iov_p = count->iov;
|
|
|
iov_len = count->iov_count;
|
|
|
|
|
|
- while (total_tx < data) {
|
|
|
- tx_loop = kernel_sendmsg(conn->sock, &msg, iov_p, iov_len,
|
|
|
- (data - total_tx));
|
|
|
- if (tx_loop <= 0) {
|
|
|
- pr_debug("tx_loop: %d total_tx %d\n",
|
|
|
- tx_loop, total_tx);
|
|
|
- return tx_loop;
|
|
|
- }
|
|
|
- total_tx += tx_loop;
|
|
|
- pr_debug("tx_loop: %d, total_tx: %d, data: %d\n",
|
|
|
- tx_loop, total_tx, data);
|
|
|
+ ret = kernel_sendmsg(conn->sock, &msg, iov_p, iov_len,
|
|
|
+ count->data_length);
|
|
|
+ if (ret != count->data_length) {
|
|
|
+ pr_err("Unexpected ret: %d send data %d\n",
|
|
|
+ ret, count->data_length);
|
|
|
+ return -EPIPE;
|
|
|
}
|
|
|
+ pr_debug("ret: %d, sent data: %d\n", ret, count->data_length);
|
|
|
|
|
|
- return total_tx;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
int rx_data(
|