|
@@ -249,7 +249,30 @@ static void iscsi_tx_data_out ( struct iscsi_session *iscsi ) {
|
249
|
249
|
* @v iscsi iSCSI session
|
250
|
250
|
*
|
251
|
251
|
* These are the initial set of strings sent in the first login
|
252
|
|
- * request PDU.
|
|
252
|
+ * request PDU. We want the following settings:
|
|
253
|
+ *
|
|
254
|
+ * HeaderDigest=None
|
|
255
|
+ * DataDigest=None
|
|
256
|
+ * MaxConnections is irrelevant; we make only one connection anyway
|
|
257
|
+ * InitialR2T=Yes (default) [1]
|
|
258
|
+ * ImmediateData is irrelevant; we never send immediate data
|
|
259
|
+ * MaxRecvDataSegmentLength=8192 (default)
|
|
260
|
+ * MaxBurstLength=262144 (default)
|
|
261
|
+ * FirstBurstLength=262144 (default)
|
|
262
|
+ * DefaultTime2Wait=0 [2]
|
|
263
|
+ * DefaultTime2Retain=0 [2]
|
|
264
|
+ * MaxOutstandingR2T=1 (default)
|
|
265
|
+ * DataPDUInOrder=Yes (default)
|
|
266
|
+ * DataSequenceInOrder=Yes (default)
|
|
267
|
+ * ErrorRecoveryLevel=0 (default)
|
|
268
|
+ *
|
|
269
|
+ * [1] InitialR2T has an OR resolution function, so the target may
|
|
270
|
+ * force us to use it. We therefore simplify our logic by always
|
|
271
|
+ * using it.
|
|
272
|
+ *
|
|
273
|
+ * [2] These ensure that we can safely start a new task once we have
|
|
274
|
+ * reconnected after a failure, without having to manually tidy up
|
|
275
|
+ * after the old one.
|
253
|
276
|
*/
|
254
|
277
|
static int iscsi_build_login_request_strings ( struct iscsi_session *iscsi,
|
255
|
278
|
void *data, size_t len ) {
|