spin_unlock_irq(&priv->lock);
 }
 
-static ssize_t show_mode(struct device *d, struct device_attribute *attr,
+static ssize_t mode_show(struct device *d, struct device_attribute *attr,
                         char *buf)
 {
        struct net_device *dev = to_net_dev(d);
                return sysfs_emit(buf, "datagram\n");
 }
 
-static ssize_t set_mode(struct device *d, struct device_attribute *attr,
-                       const char *buf, size_t count)
+static ssize_t mode_store(struct device *d, struct device_attribute *attr,
+                         const char *buf, size_t count)
 {
        struct net_device *dev = to_net_dev(d);
        int ret;
        return (!ret || ret == -EBUSY) ? count : ret;
 }
 
-static DEVICE_ATTR(mode, S_IWUSR | S_IRUGO, show_mode, set_mode);
+static DEVICE_ATTR_RW(mode);
 
 int ipoib_cm_add_mode_attr(struct net_device *dev)
 {
 
        kfree(priv);
 }
 
-static ssize_t show_pkey(struct device *dev,
-                        struct device_attribute *attr, char *buf)
+static ssize_t pkey_show(struct device *dev, struct device_attribute *attr,
+                        char *buf)
 {
        struct net_device *ndev = to_net_dev(dev);
        struct ipoib_dev_priv *priv = ipoib_priv(ndev);
 
        return sysfs_emit(buf, "0x%04x\n", priv->pkey);
 }
-static DEVICE_ATTR(pkey, S_IRUGO, show_pkey, NULL);
+static DEVICE_ATTR_RO(pkey);
 
-static ssize_t show_umcast(struct device *dev,
-                          struct device_attribute *attr, char *buf)
+static ssize_t umcast_show(struct device *dev, struct device_attribute *attr,
+                          char *buf)
 {
        struct net_device *ndev = to_net_dev(dev);
        struct ipoib_dev_priv *priv = ipoib_priv(ndev);
                clear_bit(IPOIB_FLAG_UMCAST, &priv->flags);
 }
 
-static ssize_t set_umcast(struct device *dev,
-                         struct device_attribute *attr,
-                         const char *buf, size_t count)
+static ssize_t umcast_store(struct device *dev, struct device_attribute *attr,
+                           const char *buf, size_t count)
 {
        unsigned long umcast_val = simple_strtoul(buf, NULL, 0);
 
 
        return count;
 }
-static DEVICE_ATTR(umcast, S_IWUSR | S_IRUGO, show_umcast, set_umcast);
+static DEVICE_ATTR_RW(umcast);
 
 int ipoib_add_umcast_attr(struct net_device *dev)
 {
        return 0;
 }
 
-static ssize_t create_child(struct device *dev,
-                           struct device_attribute *attr,
-                           const char *buf, size_t count)
+static ssize_t create_child_store(struct device *dev,
+                                 struct device_attribute *attr,
+                                 const char *buf, size_t count)
 {
        int pkey;
        int ret;
 
        return ret ? ret : count;
 }
-static DEVICE_ATTR(create_child, S_IWUSR, NULL, create_child);
+static DEVICE_ATTR_WO(create_child);
 
-static ssize_t delete_child(struct device *dev,
-                           struct device_attribute *attr,
-                           const char *buf, size_t count)
+static ssize_t delete_child_store(struct device *dev,
+                                 struct device_attribute *attr,
+                                 const char *buf, size_t count)
 {
        int pkey;
        int ret;
        return ret ? ret : count;
 
 }
-static DEVICE_ATTR(delete_child, S_IWUSR, NULL, delete_child);
+static DEVICE_ATTR_WO(delete_child);
 
 int ipoib_add_pkey_attr(struct net_device *dev)
 {
 
 
 #include "ipoib.h"
 
-static ssize_t show_parent(struct device *d, struct device_attribute *attr,
+static ssize_t parent_show(struct device *d, struct device_attribute *attr,
                           char *buf)
 {
        struct net_device *dev = to_net_dev(d);
 
        return sysfs_emit(buf, "%s\n", priv->parent->name);
 }
-static DEVICE_ATTR(parent, S_IRUGO, show_parent, NULL);
+static DEVICE_ATTR_RO(parent);
 
 static bool is_child_unique(struct ipoib_dev_priv *ppriv,
                            struct ipoib_dev_priv *priv)