@@ -1917,7 +1917,7 @@ static int wdc_vs_internal_fw_log(int argc, char **argv, struct command *command
19171917 OPT_FILE ("output-file" , 'o' , & cfg .file , file ),
19181918 OPT_UINT ("transfer-size" , 's' , & cfg .xfer_size , size ),
19191919 OPT_UINT ("data-area" , 'd' , & cfg .data_area , data_area ),
1920- OPT_UINT ("file-size" , 'f' , & cfg .file_size , file_size ),
1920+ OPT_LONG ("file-size" , 'f' , & cfg .file_size , file_size ),
19211921 OPT_LONG ("offset" , 't' , & cfg .offset , offset ),
19221922 OPT_FLAG ("verbose" , 'v' , & cfg .verbose , verbose ),
19231923 OPT_END ()
@@ -1973,8 +1973,12 @@ static int wdc_vs_internal_fw_log(int argc, char **argv, struct command *command
19731973 capabilities = wdc_get_drive_capabilities (fd );
19741974 if ((capabilities & WDC_DRIVE_CAP_INTERNAL_LOG ) == WDC_DRIVE_CAP_INTERNAL_LOG )
19751975 return wdc_do_cap_diag (fd , f , xfer_size );
1976- if ((capabilities & WDC_DRIVE_CAP_SN340_DUI ) == WDC_DRIVE_CAP_SN340_DUI )
1976+ if ((capabilities & WDC_DRIVE_CAP_SN340_DUI ) == WDC_DRIVE_CAP_SN340_DUI ) {
1977+ /* FW requirement - xfer size must be 500k for data area 4 */
1978+ if (cfg .data_area >= 4 )
1979+ xfer_size = 0x80000 ;
19771980 return wdc_do_cap_dui (fd , f , xfer_size , cfg .data_area , cfg .verbose , cfg .file_size , cfg .offset );
1981+ }
19781982 if ((capabilities & WDC_DRIVE_CAP_DUI_DATA ) == WDC_DRIVE_CAP_DUI_DATA )
19791983 return wdc_do_cap_dui (fd , f , xfer_size , WDC_NVME_DUI_MAX_DATA_AREA , cfg .verbose , 0 , 0 );
19801984 if ((capabilities & WDC_SN730B_CAP_VUC_LOG ) == WDC_SN730B_CAP_VUC_LOG )
0 commit comments