@@ -3184,10 +3184,12 @@ static int do_geeprom(struct cmd_context *ctx)
int geeprom_changed = 0;
int geeprom_dump_raw = 0;
u32 geeprom_offset = 0;
- u32 geeprom_length = -1;
+ u32 geeprom_length = 0;
+ int geeprom_length_seen = 0;
struct cmdline_info cmdline_geeprom[] = {
{ "offset", CMDL_U32, &geeprom_offset, NULL },
- { "length", CMDL_U32, &geeprom_length, NULL },
+ { "length", CMDL_U32, &geeprom_length, NULL,
+ 0, &geeprom_length_seen },
{ "raw", CMDL_BOOL, &geeprom_dump_raw, NULL },
};
int err;
@@ -3204,7 +3206,7 @@ static int do_geeprom(struct cmd_context *ctx)
return 74;
}
- if (geeprom_length == -1)
+ if (!geeprom_length_seen)
geeprom_length = drvinfo.eedump_len;
if (drvinfo.eedump_len < geeprom_offset + geeprom_length)
@@ -3234,14 +3236,16 @@ static int do_seeprom(struct cmd_context *ctx)
{
int seeprom_changed = 0;
u32 seeprom_magic = 0;
- u32 seeprom_length = -1;
+ u32 seeprom_length = 0;
u32 seeprom_offset = 0;
u8 seeprom_value = 0;
+ int seeprom_length_seen = 0;
int seeprom_value_seen = 0;
struct cmdline_info cmdline_seeprom[] = {
{ "magic", CMDL_U32, &seeprom_magic, NULL },
{ "offset", CMDL_U32, &seeprom_offset, NULL },
- { "length", CMDL_U32, &seeprom_length, NULL },
+ { "length", CMDL_U32, &seeprom_length, NULL,
+ 0, &seeprom_length_seen },
{ "value", CMDL_U8, &seeprom_value, NULL,
0, &seeprom_value_seen },
};
@@ -3262,7 +3266,7 @@ static int do_seeprom(struct cmd_context *ctx)
if (seeprom_value_seen)
seeprom_length = 1;
- if (seeprom_length == -1)
+ if (!seeprom_length_seen)
seeprom_length = drvinfo.eedump_len;
if (drvinfo.eedump_len < seeprom_offset + seeprom_length) {
@@ -4538,15 +4542,17 @@ static int do_getmodule(struct cmd_context *ctx)
struct ethtool_modinfo modinfo;
struct ethtool_eeprom *eeprom;
u32 geeprom_offset = 0;
- u32 geeprom_length = -1;
+ u32 geeprom_length = 0;
int geeprom_changed = 0;
int geeprom_dump_raw = 0;
int geeprom_dump_hex = 0;
+ int geeprom_length_seen = 0;
int err;
struct cmdline_info cmdline_geeprom[] = {
{ "offset", CMDL_U32, &geeprom_offset, NULL },
- { "length", CMDL_U32, &geeprom_length, NULL },
+ { "length", CMDL_U32, &geeprom_length, NULL,
+ 0, &geeprom_length_seen },
{ "raw", CMDL_BOOL, &geeprom_dump_raw, NULL },
{ "hex", CMDL_BOOL, &geeprom_dump_hex, NULL },
};
@@ -4566,7 +4572,7 @@ static int do_getmodule(struct cmd_context *ctx)
return 1;
}
- if (geeprom_length == -1)
+ if (!geeprom_length_seen)
geeprom_length = modinfo.eeprom_len;
if (modinfo.eeprom_len < geeprom_offset + geeprom_length)