aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDivy Le Ray <divy@chelsio.com>2007-02-08 19:55:59 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-08 20:13:10 -0500
commit0ee8d33c64df9a719fd61ba693203e3b33b9e10a (patch)
treeb865e67bf445f8e52dc897c782501a8b63feb67a
parentf3cc28c797604fa1cda4aef3f250f465de54a0ca (diff)
cxgb3: sysfs attributes in -mm tree
This patch fixes the usage of sysfs attributes in cxgb3 for the -mm tree. It is built against the driver commited in the -mm tree. Signed-off-by: Divy Le Ray <divy@chelsio.com> Cc: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/net/cxgb3/cxgb3_main.c86
1 files changed, 45 insertions, 41 deletions
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index dfa035a1ad45..c67f7d3c2f92 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -74,8 +74,6 @@ enum {
74 74
75#define EEPROM_MAGIC 0x38E2F10C 75#define EEPROM_MAGIC 0x38E2F10C
76 76
77#define to_net_dev(class) container_of(class, struct net_device, class_dev)
78
79#define CH_DEVICE(devid, ssid, idx) \ 77#define CH_DEVICE(devid, ssid, idx) \
80 { PCI_VENDOR_ID_CHELSIO, devid, PCI_ANY_ID, ssid, 0, 0, idx } 78 { PCI_VENDOR_ID_CHELSIO, devid, PCI_ANY_ID, ssid, 0, 0, idx }
81 79
@@ -434,11 +432,12 @@ static int setup_sge_qsets(struct adapter *adap)
434 return 0; 432 return 0;
435} 433}
436 434
437static ssize_t attr_show(struct class_device *cd, char *buf, 435static ssize_t attr_show(struct device *d, struct device_attribute *attr,
436 char *buf,
438 ssize_t(*format) (struct adapter *, char *)) 437 ssize_t(*format) (struct adapter *, char *))
439{ 438{
440 ssize_t len; 439 ssize_t len;
441 struct adapter *adap = to_net_dev(cd)->priv; 440 struct adapter *adap = to_net_dev(d)->priv;
442 441
443 /* Synchronize with ioctls that may shut down the device */ 442 /* Synchronize with ioctls that may shut down the device */
444 rtnl_lock(); 443 rtnl_lock();
@@ -447,14 +446,15 @@ static ssize_t attr_show(struct class_device *cd, char *buf,
447 return len; 446 return len;
448} 447}
449 448
450static ssize_t attr_store(struct class_device *cd, const char *buf, size_t len, 449static ssize_t attr_store(struct device *d, struct device_attribute *attr,
450 const char *buf, size_t len,
451 ssize_t(*set) (struct adapter *, unsigned int), 451 ssize_t(*set) (struct adapter *, unsigned int),
452 unsigned int min_val, unsigned int max_val) 452 unsigned int min_val, unsigned int max_val)
453{ 453{
454 char *endp; 454 char *endp;
455 ssize_t ret; 455 ssize_t ret;
456 unsigned int val; 456 unsigned int val;
457 struct adapter *adap = to_net_dev(cd)->priv; 457 struct adapter *adap = to_net_dev(d)->priv;
458 458
459 if (!capable(CAP_NET_ADMIN)) 459 if (!capable(CAP_NET_ADMIN))
460 return -EPERM; 460 return -EPERM;
@@ -476,9 +476,10 @@ static ssize_t format_##name(struct adapter *adap, char *buf) \
476{ \ 476{ \
477 return sprintf(buf, "%u\n", val_expr); \ 477 return sprintf(buf, "%u\n", val_expr); \
478} \ 478} \
479static ssize_t show_##name(struct class_device *cd, char *buf) \ 479static ssize_t show_##name(struct device *d, struct device_attribute *attr, \
480 char *buf) \
480{ \ 481{ \
481 return attr_show(cd, buf, format_##name); \ 482 return attr_show(d, attr, buf, format_##name); \
482} 483}
483 484
484static ssize_t set_nfilters(struct adapter *adap, unsigned int val) 485static ssize_t set_nfilters(struct adapter *adap, unsigned int val)
@@ -493,10 +494,10 @@ static ssize_t set_nfilters(struct adapter *adap, unsigned int val)
493 return 0; 494 return 0;
494} 495}
495 496
496static ssize_t store_nfilters(struct class_device *cd, const char *buf, 497static ssize_t store_nfilters(struct device *d, struct device_attribute *attr,
497 size_t len) 498 const char *buf, size_t len)
498{ 499{
499 return attr_store(cd, buf, len, set_nfilters, 0, ~0); 500 return attr_store(d, attr, buf, len, set_nfilters, 0, ~0);
500} 501}
501 502
502static ssize_t set_nservers(struct adapter *adap, unsigned int val) 503static ssize_t set_nservers(struct adapter *adap, unsigned int val)
@@ -509,38 +510,39 @@ static ssize_t set_nservers(struct adapter *adap, unsigned int val)
509 return 0; 510 return 0;
510} 511}
511 512
512static ssize_t store_nservers(struct class_device *cd, const char *buf, 513static ssize_t store_nservers(struct device *d, struct device_attribute *attr,
513 size_t len) 514 const char *buf, size_t len)
514{ 515{
515 return attr_store(cd, buf, len, set_nservers, 0, ~0); 516 return attr_store(d, attr, buf, len, set_nservers, 0, ~0);
516} 517}
517 518
518#define CXGB3_ATTR_R(name, val_expr) \ 519#define CXGB3_ATTR_R(name, val_expr) \
519CXGB3_SHOW(name, val_expr) \ 520CXGB3_SHOW(name, val_expr) \
520static CLASS_DEVICE_ATTR(name, S_IRUGO, show_##name, NULL) 521static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL)
521 522
522#define CXGB3_ATTR_RW(name, val_expr, store_method) \ 523#define CXGB3_ATTR_RW(name, val_expr, store_method) \
523CXGB3_SHOW(name, val_expr) \ 524CXGB3_SHOW(name, val_expr) \
524static CLASS_DEVICE_ATTR(name, S_IRUGO | S_IWUSR, show_##name, store_method) 525static DEVICE_ATTR(name, S_IRUGO | S_IWUSR, show_##name, store_method)
525 526
526CXGB3_ATTR_R(cam_size, t3_mc5_size(&adap->mc5)); 527CXGB3_ATTR_R(cam_size, t3_mc5_size(&adap->mc5));
527CXGB3_ATTR_RW(nfilters, adap->params.mc5.nfilters, store_nfilters); 528CXGB3_ATTR_RW(nfilters, adap->params.mc5.nfilters, store_nfilters);
528CXGB3_ATTR_RW(nservers, adap->params.mc5.nservers, store_nservers); 529CXGB3_ATTR_RW(nservers, adap->params.mc5.nservers, store_nservers);
529 530
530static struct attribute *cxgb3_attrs[] = { 531static struct attribute *cxgb3_attrs[] = {
531 &class_device_attr_cam_size.attr, 532 &dev_attr_cam_size.attr,
532 &class_device_attr_nfilters.attr, 533 &dev_attr_nfilters.attr,
533 &class_device_attr_nservers.attr, 534 &dev_attr_nservers.attr,
534 NULL 535 NULL
535}; 536};
536 537
537static struct attribute_group cxgb3_attr_group = {.attrs = cxgb3_attrs }; 538static struct attribute_group cxgb3_attr_group = {.attrs = cxgb3_attrs };
538 539
539static ssize_t tm_attr_show(struct class_device *cd, char *buf, int sched) 540static ssize_t tm_attr_show(struct device *d, struct device_attribute *attr,
541 char *buf, int sched)
540{ 542{
541 ssize_t len; 543 ssize_t len;
542 unsigned int v, addr, bpt, cpt; 544 unsigned int v, addr, bpt, cpt;
543 struct adapter *adap = to_net_dev(cd)->priv; 545 struct adapter *adap = to_net_dev(d)->priv;
544 546
545 addr = A_TP_TX_MOD_Q1_Q0_RATE_LIMIT - sched / 2; 547 addr = A_TP_TX_MOD_Q1_Q0_RATE_LIMIT - sched / 2;
546 rtnl_lock(); 548 rtnl_lock();
@@ -560,13 +562,13 @@ static ssize_t tm_attr_show(struct class_device *cd, char *buf, int sched)
560 return len; 562 return len;
561} 563}
562 564
563static ssize_t tm_attr_store(struct class_device *cd, const char *buf, 565static ssize_t tm_attr_store(struct device *d, struct device_attribute *attr,
564 size_t len, int sched) 566 const char *buf, size_t len, int sched)
565{ 567{
566 char *endp; 568 char *endp;
567 ssize_t ret; 569 ssize_t ret;
568 unsigned int val; 570 unsigned int val;
569 struct adapter *adap = to_net_dev(cd)->priv; 571 struct adapter *adap = to_net_dev(d)->priv;
570 572
571 if (!capable(CAP_NET_ADMIN)) 573 if (!capable(CAP_NET_ADMIN))
572 return -EPERM; 574 return -EPERM;
@@ -584,15 +586,17 @@ static ssize_t tm_attr_store(struct class_device *cd, const char *buf,
584} 586}
585 587
586#define TM_ATTR(name, sched) \ 588#define TM_ATTR(name, sched) \
587static ssize_t show_##name(struct class_device *cd, char *buf) \ 589static ssize_t show_##name(struct device *d, struct device_attribute *attr, \
590 char *buf) \
588{ \ 591{ \
589 return tm_attr_show(cd, buf, sched); \ 592 return tm_attr_show(d, attr, buf, sched); \
590} \ 593} \
591static ssize_t store_##name(struct class_device *cd, const char *buf, size_t len) \ 594static ssize_t store_##name(struct device *d, struct device_attribute *attr, \
595 const char *buf, size_t len) \
592{ \ 596{ \
593 return tm_attr_store(cd, buf, len, sched); \ 597 return tm_attr_store(d, attr, buf, len, sched); \
594} \ 598} \
595static CLASS_DEVICE_ATTR(name, S_IRUGO | S_IWUSR, show_##name, store_##name) 599static DEVICE_ATTR(name, S_IRUGO | S_IWUSR, show_##name, store_##name)
596 600
597TM_ATTR(sched0, 0); 601TM_ATTR(sched0, 0);
598TM_ATTR(sched1, 1); 602TM_ATTR(sched1, 1);
@@ -604,14 +608,14 @@ TM_ATTR(sched6, 6);
604TM_ATTR(sched7, 7); 608TM_ATTR(sched7, 7);
605 609
606static struct attribute *offload_attrs[] = { 610static struct attribute *offload_attrs[] = {
607 &class_device_attr_sched0.attr, 611 &dev_attr_sched0.attr,
608 &class_device_attr_sched1.attr, 612 &dev_attr_sched1.attr,
609 &class_device_attr_sched2.attr, 613 &dev_attr_sched2.attr,
610 &class_device_attr_sched3.attr, 614 &dev_attr_sched3.attr,
611 &class_device_attr_sched4.attr, 615 &dev_attr_sched4.attr,
612 &class_device_attr_sched5.attr, 616 &dev_attr_sched5.attr,
613 &class_device_attr_sched6.attr, 617 &dev_attr_sched6.attr,
614 &class_device_attr_sched7.attr, 618 &dev_attr_sched7.attr,
615 NULL 619 NULL
616}; 620};
617 621
@@ -836,7 +840,7 @@ static int offload_open(struct net_device *dev)
836 init_smt(adapter); 840 init_smt(adapter);
837 841
838 /* Never mind if the next step fails */ 842 /* Never mind if the next step fails */
839 sysfs_create_group(&tdev->lldev->class_dev.kobj, &offload_attr_group); 843 sysfs_create_group(&tdev->lldev->dev.kobj, &offload_attr_group);
840 844
841 /* Call back all registered clients */ 845 /* Call back all registered clients */
842 cxgb3_add_clients(tdev); 846 cxgb3_add_clients(tdev);
@@ -861,7 +865,7 @@ static int offload_close(struct t3cdev *tdev)
861 /* Call back all registered clients */ 865 /* Call back all registered clients */
862 cxgb3_remove_clients(tdev); 866 cxgb3_remove_clients(tdev);
863 867
864 sysfs_remove_group(&tdev->lldev->class_dev.kobj, &offload_attr_group); 868 sysfs_remove_group(&tdev->lldev->dev.kobj, &offload_attr_group);
865 869
866 tdev->lldev = NULL; 870 tdev->lldev = NULL;
867 cxgb3_set_dummy_ops(tdev); 871 cxgb3_set_dummy_ops(tdev);
@@ -2420,7 +2424,7 @@ static int __devinit init_one(struct pci_dev *pdev,
2420 else if (msi > 0 && pci_enable_msi(pdev) == 0) 2424 else if (msi > 0 && pci_enable_msi(pdev) == 0)
2421 adapter->flags |= USING_MSI; 2425 adapter->flags |= USING_MSI;
2422 2426
2423 err = sysfs_create_group(&adapter->port[0]->class_dev.kobj, 2427 err = sysfs_create_group(&adapter->port[0]->dev.kobj,
2424 &cxgb3_attr_group); 2428 &cxgb3_attr_group);
2425 2429
2426 print_port_info(adapter, ai); 2430 print_port_info(adapter, ai);
@@ -2452,7 +2456,7 @@ static void __devexit remove_one(struct pci_dev *pdev)
2452 struct adapter *adapter = dev->priv; 2456 struct adapter *adapter = dev->priv;
2453 2457
2454 t3_sge_stop(adapter); 2458 t3_sge_stop(adapter);
2455 sysfs_remove_group(&adapter->port[0]->class_dev.kobj, 2459 sysfs_remove_group(&adapter->port[0]->dev.kobj,
2456 &cxgb3_attr_group); 2460 &cxgb3_attr_group);
2457 2461
2458 for_each_port(adapter, i) 2462 for_each_port(adapter, i)