diff options
| -rw-r--r-- | drivers/net/e1000/e1000_param.c | 81 |
1 files changed, 45 insertions, 36 deletions
diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/e1000/e1000_param.c index b9f90a5d3d4d..213437d13154 100644 --- a/drivers/net/e1000/e1000_param.c +++ b/drivers/net/e1000/e1000_param.c | |||
| @@ -208,7 +208,7 @@ struct e1000_option { | |||
| 208 | } r; | 208 | } r; |
| 209 | struct { /* list_option info */ | 209 | struct { /* list_option info */ |
| 210 | int nr; | 210 | int nr; |
| 211 | struct e1000_opt_list { int i; char *str; } *p; | 211 | const struct e1000_opt_list { int i; char *str; } *p; |
| 212 | } l; | 212 | } l; |
| 213 | } arg; | 213 | } arg; |
| 214 | }; | 214 | }; |
| @@ -242,7 +242,7 @@ static int __devinit e1000_validate_option(unsigned int *value, | |||
| 242 | break; | 242 | break; |
| 243 | case list_option: { | 243 | case list_option: { |
| 244 | int i; | 244 | int i; |
| 245 | struct e1000_opt_list *ent; | 245 | const struct e1000_opt_list *ent; |
| 246 | 246 | ||
| 247 | for (i = 0; i < opt->arg.l.nr; i++) { | 247 | for (i = 0; i < opt->arg.l.nr; i++) { |
| 248 | ent = &opt->arg.l.p[i]; | 248 | ent = &opt->arg.l.p[i]; |
| @@ -279,7 +279,9 @@ static void e1000_check_copper_options(struct e1000_adapter *adapter); | |||
| 279 | 279 | ||
| 280 | void __devinit e1000_check_options(struct e1000_adapter *adapter) | 280 | void __devinit e1000_check_options(struct e1000_adapter *adapter) |
| 281 | { | 281 | { |
| 282 | struct e1000_option opt; | ||
| 282 | int bd = adapter->bd_number; | 283 | int bd = adapter->bd_number; |
| 284 | |||
| 283 | if (bd >= E1000_MAX_NIC) { | 285 | if (bd >= E1000_MAX_NIC) { |
| 284 | DPRINTK(PROBE, NOTICE, | 286 | DPRINTK(PROBE, NOTICE, |
| 285 | "Warning: no configuration for board #%i\n", bd); | 287 | "Warning: no configuration for board #%i\n", bd); |
| @@ -287,19 +289,21 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 287 | } | 289 | } |
| 288 | 290 | ||
| 289 | { /* Transmit Descriptor Count */ | 291 | { /* Transmit Descriptor Count */ |
| 290 | struct e1000_option opt = { | 292 | struct e1000_tx_ring *tx_ring = adapter->tx_ring; |
| 293 | int i; | ||
| 294 | e1000_mac_type mac_type = adapter->hw.mac_type; | ||
| 295 | |||
| 296 | opt = (struct e1000_option) { | ||
| 291 | .type = range_option, | 297 | .type = range_option, |
| 292 | .name = "Transmit Descriptors", | 298 | .name = "Transmit Descriptors", |
| 293 | .err = "using default of " | 299 | .err = "using default of " |
| 294 | __MODULE_STRING(E1000_DEFAULT_TXD), | 300 | __MODULE_STRING(E1000_DEFAULT_TXD), |
| 295 | .def = E1000_DEFAULT_TXD, | 301 | .def = E1000_DEFAULT_TXD, |
| 296 | .arg = { .r = { .min = E1000_MIN_TXD }} | 302 | .arg = { .r = { |
| 303 | .min = E1000_MIN_TXD, | ||
| 304 | .max = mac_type < e1000_82544 ? E1000_MAX_TXD : E1000_MAX_82544_TXD | ||
| 305 | }} | ||
| 297 | }; | 306 | }; |
| 298 | struct e1000_tx_ring *tx_ring = adapter->tx_ring; | ||
| 299 | int i; | ||
| 300 | e1000_mac_type mac_type = adapter->hw.mac_type; | ||
| 301 | opt.arg.r.max = mac_type < e1000_82544 ? | ||
| 302 | E1000_MAX_TXD : E1000_MAX_82544_TXD; | ||
| 303 | 307 | ||
| 304 | if (num_TxDescriptors > bd) { | 308 | if (num_TxDescriptors > bd) { |
| 305 | tx_ring->count = TxDescriptors[bd]; | 309 | tx_ring->count = TxDescriptors[bd]; |
| @@ -313,19 +317,21 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 313 | tx_ring[i].count = tx_ring->count; | 317 | tx_ring[i].count = tx_ring->count; |
| 314 | } | 318 | } |
| 315 | { /* Receive Descriptor Count */ | 319 | { /* Receive Descriptor Count */ |
| 316 | struct e1000_option opt = { | 320 | struct e1000_rx_ring *rx_ring = adapter->rx_ring; |
| 321 | int i; | ||
| 322 | e1000_mac_type mac_type = adapter->hw.mac_type; | ||
| 323 | |||
| 324 | opt = (struct e1000_option) { | ||
| 317 | .type = range_option, | 325 | .type = range_option, |
| 318 | .name = "Receive Descriptors", | 326 | .name = "Receive Descriptors", |
| 319 | .err = "using default of " | 327 | .err = "using default of " |
| 320 | __MODULE_STRING(E1000_DEFAULT_RXD), | 328 | __MODULE_STRING(E1000_DEFAULT_RXD), |
| 321 | .def = E1000_DEFAULT_RXD, | 329 | .def = E1000_DEFAULT_RXD, |
| 322 | .arg = { .r = { .min = E1000_MIN_RXD }} | 330 | .arg = { .r = { |
| 331 | .min = E1000_MIN_RXD, | ||
| 332 | .max = mac_type < e1000_82544 ? E1000_MAX_RXD : E1000_MAX_82544_RXD | ||
| 333 | }} | ||
| 323 | }; | 334 | }; |
| 324 | struct e1000_rx_ring *rx_ring = adapter->rx_ring; | ||
| 325 | int i; | ||
| 326 | e1000_mac_type mac_type = adapter->hw.mac_type; | ||
| 327 | opt.arg.r.max = mac_type < e1000_82544 ? E1000_MAX_RXD : | ||
| 328 | E1000_MAX_82544_RXD; | ||
| 329 | 335 | ||
| 330 | if (num_RxDescriptors > bd) { | 336 | if (num_RxDescriptors > bd) { |
| 331 | rx_ring->count = RxDescriptors[bd]; | 337 | rx_ring->count = RxDescriptors[bd]; |
| @@ -339,7 +345,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 339 | rx_ring[i].count = rx_ring->count; | 345 | rx_ring[i].count = rx_ring->count; |
| 340 | } | 346 | } |
| 341 | { /* Checksum Offload Enable/Disable */ | 347 | { /* Checksum Offload Enable/Disable */ |
| 342 | struct e1000_option opt = { | 348 | opt = (struct e1000_option) { |
| 343 | .type = enable_option, | 349 | .type = enable_option, |
| 344 | .name = "Checksum Offload", | 350 | .name = "Checksum Offload", |
| 345 | .err = "defaulting to Enabled", | 351 | .err = "defaulting to Enabled", |
| @@ -363,7 +369,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 363 | { E1000_FC_FULL, "Flow Control Enabled" }, | 369 | { E1000_FC_FULL, "Flow Control Enabled" }, |
| 364 | { E1000_FC_DEFAULT, "Flow Control Hardware Default" }}; | 370 | { E1000_FC_DEFAULT, "Flow Control Hardware Default" }}; |
| 365 | 371 | ||
| 366 | struct e1000_option opt = { | 372 | opt = (struct e1000_option) { |
| 367 | .type = list_option, | 373 | .type = list_option, |
| 368 | .name = "Flow Control", | 374 | .name = "Flow Control", |
| 369 | .err = "reading default settings from EEPROM", | 375 | .err = "reading default settings from EEPROM", |
| @@ -381,7 +387,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 381 | } | 387 | } |
| 382 | } | 388 | } |
| 383 | { /* Transmit Interrupt Delay */ | 389 | { /* Transmit Interrupt Delay */ |
| 384 | struct e1000_option opt = { | 390 | opt = (struct e1000_option) { |
| 385 | .type = range_option, | 391 | .type = range_option, |
| 386 | .name = "Transmit Interrupt Delay", | 392 | .name = "Transmit Interrupt Delay", |
| 387 | .err = "using default of " __MODULE_STRING(DEFAULT_TIDV), | 393 | .err = "using default of " __MODULE_STRING(DEFAULT_TIDV), |
| @@ -399,7 +405,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 399 | } | 405 | } |
| 400 | } | 406 | } |
| 401 | { /* Transmit Absolute Interrupt Delay */ | 407 | { /* Transmit Absolute Interrupt Delay */ |
| 402 | struct e1000_option opt = { | 408 | opt = (struct e1000_option) { |
| 403 | .type = range_option, | 409 | .type = range_option, |
| 404 | .name = "Transmit Absolute Interrupt Delay", | 410 | .name = "Transmit Absolute Interrupt Delay", |
| 405 | .err = "using default of " __MODULE_STRING(DEFAULT_TADV), | 411 | .err = "using default of " __MODULE_STRING(DEFAULT_TADV), |
| @@ -417,7 +423,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 417 | } | 423 | } |
| 418 | } | 424 | } |
| 419 | { /* Receive Interrupt Delay */ | 425 | { /* Receive Interrupt Delay */ |
| 420 | struct e1000_option opt = { | 426 | opt = (struct e1000_option) { |
| 421 | .type = range_option, | 427 | .type = range_option, |
| 422 | .name = "Receive Interrupt Delay", | 428 | .name = "Receive Interrupt Delay", |
| 423 | .err = "using default of " __MODULE_STRING(DEFAULT_RDTR), | 429 | .err = "using default of " __MODULE_STRING(DEFAULT_RDTR), |
| @@ -435,7 +441,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 435 | } | 441 | } |
| 436 | } | 442 | } |
| 437 | { /* Receive Absolute Interrupt Delay */ | 443 | { /* Receive Absolute Interrupt Delay */ |
| 438 | struct e1000_option opt = { | 444 | opt = (struct e1000_option) { |
| 439 | .type = range_option, | 445 | .type = range_option, |
| 440 | .name = "Receive Absolute Interrupt Delay", | 446 | .name = "Receive Absolute Interrupt Delay", |
| 441 | .err = "using default of " __MODULE_STRING(DEFAULT_RADV), | 447 | .err = "using default of " __MODULE_STRING(DEFAULT_RADV), |
| @@ -453,7 +459,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 453 | } | 459 | } |
| 454 | } | 460 | } |
| 455 | { /* Interrupt Throttling Rate */ | 461 | { /* Interrupt Throttling Rate */ |
| 456 | struct e1000_option opt = { | 462 | opt = (struct e1000_option) { |
| 457 | .type = range_option, | 463 | .type = range_option, |
| 458 | .name = "Interrupt Throttling Rate (ints/sec)", | 464 | .name = "Interrupt Throttling Rate (ints/sec)", |
| 459 | .err = "using default of " __MODULE_STRING(DEFAULT_ITR), | 465 | .err = "using default of " __MODULE_STRING(DEFAULT_ITR), |
| @@ -497,7 +503,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 497 | } | 503 | } |
| 498 | } | 504 | } |
| 499 | { /* Smart Power Down */ | 505 | { /* Smart Power Down */ |
| 500 | struct e1000_option opt = { | 506 | opt = (struct e1000_option) { |
| 501 | .type = enable_option, | 507 | .type = enable_option, |
| 502 | .name = "PHY Smart Power Down", | 508 | .name = "PHY Smart Power Down", |
| 503 | .err = "defaulting to Disabled", | 509 | .err = "defaulting to Disabled", |
| @@ -513,7 +519,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter) | |||
| 513 | } | 519 | } |
| 514 | } | 520 | } |
| 515 | { /* Kumeran Lock Loss Workaround */ | 521 | { /* Kumeran Lock Loss Workaround */ |
| 516 | struct e1000_option opt = { | 522 | opt = (struct e1000_option) { |
| 517 | .type = enable_option, | 523 | .type = enable_option, |
| 518 | .name = "Kumeran Lock Loss Workaround", | 524 | .name = "Kumeran Lock Loss Workaround", |
| 519 | .err = "defaulting to Enabled", | 525 | .err = "defaulting to Enabled", |
| @@ -578,16 +584,18 @@ static void __devinit e1000_check_fiber_options(struct e1000_adapter *adapter) | |||
| 578 | 584 | ||
| 579 | static void __devinit e1000_check_copper_options(struct e1000_adapter *adapter) | 585 | static void __devinit e1000_check_copper_options(struct e1000_adapter *adapter) |
| 580 | { | 586 | { |
| 587 | struct e1000_option opt; | ||
| 581 | unsigned int speed, dplx, an; | 588 | unsigned int speed, dplx, an; |
| 582 | int bd = adapter->bd_number; | 589 | int bd = adapter->bd_number; |
| 583 | 590 | ||
| 584 | { /* Speed */ | 591 | { /* Speed */ |
| 585 | struct e1000_opt_list speed_list[] = {{ 0, "" }, | 592 | static const struct e1000_opt_list speed_list[] = { |
| 586 | { SPEED_10, "" }, | 593 | { 0, "" }, |
| 587 | { SPEED_100, "" }, | 594 | { SPEED_10, "" }, |
| 588 | { SPEED_1000, "" }}; | 595 | { SPEED_100, "" }, |
| 596 | { SPEED_1000, "" }}; | ||
| 589 | 597 | ||
| 590 | struct e1000_option opt = { | 598 | opt = (struct e1000_option) { |
| 591 | .type = list_option, | 599 | .type = list_option, |
| 592 | .name = "Speed", | 600 | .name = "Speed", |
| 593 | .err = "parameter ignored", | 601 | .err = "parameter ignored", |
| @@ -604,11 +612,12 @@ static void __devinit e1000_check_copper_options(struct e1000_adapter *adapter) | |||
| 604 | } | 612 | } |
| 605 | } | 613 | } |
| 606 | { /* Duplex */ | 614 | { /* Duplex */ |
| 607 | struct e1000_opt_list dplx_list[] = {{ 0, "" }, | 615 | static const struct e1000_opt_list dplx_list[] = { |
| 608 | { HALF_DUPLEX, "" }, | 616 | { 0, "" }, |
| 609 | { FULL_DUPLEX, "" }}; | 617 | { HALF_DUPLEX, "" }, |
| 618 | { FULL_DUPLEX, "" }}; | ||
| 610 | 619 | ||
| 611 | struct e1000_option opt = { | 620 | opt = (struct e1000_option) { |
| 612 | .type = list_option, | 621 | .type = list_option, |
| 613 | .name = "Duplex", | 622 | .name = "Duplex", |
| 614 | .err = "parameter ignored", | 623 | .err = "parameter ignored", |
| @@ -637,7 +646,7 @@ static void __devinit e1000_check_copper_options(struct e1000_adapter *adapter) | |||
| 637 | "parameter ignored\n"); | 646 | "parameter ignored\n"); |
| 638 | adapter->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT; | 647 | adapter->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT; |
| 639 | } else { /* Autoneg */ | 648 | } else { /* Autoneg */ |
| 640 | struct e1000_opt_list an_list[] = | 649 | static const struct e1000_opt_list an_list[] = |
| 641 | #define AA "AutoNeg advertising " | 650 | #define AA "AutoNeg advertising " |
| 642 | {{ 0x01, AA "10/HD" }, | 651 | {{ 0x01, AA "10/HD" }, |
| 643 | { 0x02, AA "10/FD" }, | 652 | { 0x02, AA "10/FD" }, |
| @@ -671,7 +680,7 @@ static void __devinit e1000_check_copper_options(struct e1000_adapter *adapter) | |||
| 671 | { 0x2e, AA "1000/FD, 100/FD, 100/HD, 10/FD" }, | 680 | { 0x2e, AA "1000/FD, 100/FD, 100/HD, 10/FD" }, |
| 672 | { 0x2f, AA "1000/FD, 100/FD, 100/HD, 10/FD, 10/HD" }}; | 681 | { 0x2f, AA "1000/FD, 100/FD, 100/HD, 10/FD, 10/HD" }}; |
| 673 | 682 | ||
| 674 | struct e1000_option opt = { | 683 | opt = (struct e1000_option) { |
| 675 | .type = list_option, | 684 | .type = list_option, |
| 676 | .name = "AutoNeg", | 685 | .name = "AutoNeg", |
| 677 | .err = "parameter ignored", | 686 | .err = "parameter ignored", |
