]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blobdiff - net/ncsi/ncsi-manage.c
treewide: setup_timer() -> timer_setup()
[mirror_ubuntu-hirsute-kernel.git] / net / ncsi / ncsi-manage.c
index 28c42b22b7489efa1d7fffd51eee2a146ecad636..3ccf8dfb233e74617c24f7538e3d27b684ceb627 100644 (file)
@@ -38,7 +38,7 @@ static inline int ncsi_filter_size(int table)
        return sizes[table];
 }
 
-u32 *ncsi_get_filter(struct ncsi_channel *nc, int table, int index)
+static u32 *ncsi_get_filter(struct ncsi_channel *nc, int table, int index)
 {
        struct ncsi_channel_filter *ncf;
        int size;
@@ -229,6 +229,8 @@ static void ncsi_channel_monitor(unsigned long data)
        case NCSI_CHANNEL_MONITOR_WAIT ... NCSI_CHANNEL_MONITOR_WAIT_MAX:
                break;
        default:
+               netdev_err(ndp->ndev.dev, "NCSI Channel %d timed out!\n",
+                          nc->id);
                if (!(ndp->flags & NCSI_DEV_HWA)) {
                        ncsi_report_link(ndp, true);
                        ndp->flags |= NCSI_DEV_RESHUFFLE;
@@ -527,9 +529,9 @@ struct ncsi_dev *ncsi_find_dev(struct net_device *dev)
        return NULL;
 }
 
-static void ncsi_request_timeout(unsigned long data)
+static void ncsi_request_timeout(struct timer_list *t)
 {
-       struct ncsi_request *nr = (struct ncsi_request *)data;
+       struct ncsi_request *nr = from_timer(nr, t, timer);
        struct ncsi_dev_priv *ndp = nr->ndp;
        unsigned long flags;
 
@@ -682,7 +684,7 @@ static int clear_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc,
        data = ncsi_get_filter(nc, NCSI_FILTER_VLAN, index);
        if (!data) {
                netdev_err(ndp->ndev.dev,
-                          "ncsi: failed to retrieve filter %d\n", index);
+                          "NCSI: failed to retrieve filter %d\n", index);
                /* Set the VLAN id to 0 - this will still disable the entry in
                 * the filter table, but we won't know what it was.
                 */
@@ -692,7 +694,7 @@ static int clear_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc,
        }
 
        netdev_printk(KERN_DEBUG, ndp->ndev.dev,
-                     "ncsi: removed vlan tag %u at index %d\n",
+                     "NCSI: removed vlan tag %u at index %d\n",
                      vid, index + 1);
        ncsi_remove_filter(nc, NCSI_FILTER_VLAN, index);
 
@@ -718,7 +720,7 @@ static int set_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc,
                if (index < 0) {
                        /* New tag to add */
                        netdev_printk(KERN_DEBUG, ndp->ndev.dev,
-                                     "ncsi: new vlan id to set: %u\n",
+                                     "NCSI: new vlan id to set: %u\n",
                                      vlan->vid);
                        break;
                }
@@ -745,7 +747,7 @@ static int set_one_vid(struct ncsi_dev_priv *ndp, struct ncsi_channel *nc,
        }
 
        netdev_printk(KERN_DEBUG, ndp->ndev.dev,
-                     "ncsi: set vid %u in packet, index %u\n",
+                     "NCSI: set vid %u in packet, index %u\n",
                      vlan->vid, index + 1);
        nca->type = NCSI_PKT_CMD_SVF;
        nca->words[1] = vlan->vid;
@@ -784,8 +786,11 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
                nca.package = np->id;
                nca.channel = NCSI_RESERVED_CHANNEL;
                ret = ncsi_xmit_cmd(&nca);
-               if (ret)
+               if (ret) {
+                       netdev_err(ndp->ndev.dev,
+                                  "NCSI: Failed to transmit CMD_SP\n");
                        goto error;
+               }
 
                nd->state = ncsi_dev_state_config_cis;
                break;
@@ -797,8 +802,11 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
                nca.package = np->id;
                nca.channel = nc->id;
                ret = ncsi_xmit_cmd(&nca);
-               if (ret)
+               if (ret) {
+                       netdev_err(ndp->ndev.dev,
+                                  "NCSI: Failed to transmit CMD_CIS\n");
                        goto error;
+               }
 
                nd->state = ncsi_dev_state_config_clear_vids;
                break;
@@ -895,10 +903,16 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
                }
 
                ret = ncsi_xmit_cmd(&nca);
-               if (ret)
+               if (ret) {
+                       netdev_err(ndp->ndev.dev,
+                                  "NCSI: Failed to transmit CMD %x\n",
+                                  nca.type);
                        goto error;
+               }
                break;
        case ncsi_dev_state_config_done:
+               netdev_printk(KERN_DEBUG, ndp->ndev.dev,
+                             "NCSI: channel %u config done\n", nc->id);
                spin_lock_irqsave(&nc->lock, flags);
                if (nc->reconfigure_needed) {
                        /* This channel's configuration has been updated
@@ -925,6 +939,9 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
                } else {
                        hot_nc = NULL;
                        nc->state = NCSI_CHANNEL_INACTIVE;
+                       netdev_warn(ndp->ndev.dev,
+                                   "NCSI: channel %u link down after config\n",
+                                   nc->id);
                }
                spin_unlock_irqrestore(&nc->lock, flags);
 
@@ -937,8 +954,8 @@ static void ncsi_configure_channel(struct ncsi_dev_priv *ndp)
                ncsi_process_next_channel(ndp);
                break;
        default:
-               netdev_warn(dev, "Wrong NCSI state 0x%x in config\n",
-                           nd->state);
+               netdev_alert(dev, "Wrong NCSI state 0x%x in config\n",
+                            nd->state);
        }
 
        return;
@@ -990,10 +1007,17 @@ static int ncsi_choose_active_channel(struct ncsi_dev_priv *ndp)
        }
 
        if (!found) {
+               netdev_warn(ndp->ndev.dev,
+                           "NCSI: No channel found with link\n");
                ncsi_report_link(ndp, true);
                return -ENODEV;
        }
 
+       ncm = &found->modes[NCSI_MODE_LINK];
+       netdev_printk(KERN_DEBUG, ndp->ndev.dev,
+                     "NCSI: Channel %u added to queue (link %s)\n",
+                     found->id, ncm->data[2] & 0x1 ? "up" : "down");
+
 out:
        spin_lock_irqsave(&ndp->lock, flags);
        list_add_tail_rcu(&found->link, &ndp->channel_queue);
@@ -1055,6 +1079,8 @@ static int ncsi_enable_hwa(struct ncsi_dev_priv *ndp)
 
        /* We can have no channels in extremely case */
        if (list_empty(&ndp->channel_queue)) {
+               netdev_err(ndp->ndev.dev,
+                          "NCSI: No available channels for HWA\n");
                ncsi_report_link(ndp, false);
                return -ENOENT;
        }
@@ -1223,6 +1249,9 @@ static void ncsi_probe_channel(struct ncsi_dev_priv *ndp)
 
        return;
 error:
+       netdev_err(ndp->ndev.dev,
+                  "NCSI: Failed to transmit cmd 0x%x during probe\n",
+                  nca.type);
        ncsi_report_link(ndp, true);
 }
 
@@ -1276,10 +1305,14 @@ int ncsi_process_next_channel(struct ncsi_dev_priv *ndp)
        switch (old_state) {
        case NCSI_CHANNEL_INACTIVE:
                ndp->ndev.state = ncsi_dev_state_config;
+               netdev_info(ndp->ndev.dev, "NCSI: configuring channel %u\n",
+                           nc->id);
                ncsi_configure_channel(ndp);
                break;
        case NCSI_CHANNEL_ACTIVE:
                ndp->ndev.state = ncsi_dev_state_suspend;
+               netdev_info(ndp->ndev.dev, "NCSI: suspending channel %u\n",
+                           nc->id);
                ncsi_suspend_channel(ndp);
                break;
        default:
@@ -1299,6 +1332,8 @@ out:
                return ncsi_choose_active_channel(ndp);
        }
 
+       netdev_printk(KERN_DEBUG, ndp->ndev.dev,
+                     "NCSI: No more channels to process\n");
        ncsi_report_link(ndp, false);
        return -ENODEV;
 }
@@ -1390,7 +1425,7 @@ static int ncsi_kick_channels(struct ncsi_dev_priv *ndp)
                                                ncsi_dev_state_config ||
                                                !list_empty(&nc->link)) {
                                        netdev_printk(KERN_DEBUG, nd->dev,
-                                                     "ncsi: channel %p marked dirty\n",
+                                                     "NCSI: channel %p marked dirty\n",
                                                      nc);
                                        nc->reconfigure_needed = true;
                                }
@@ -1410,7 +1445,7 @@ static int ncsi_kick_channels(struct ncsi_dev_priv *ndp)
                        spin_unlock_irqrestore(&ndp->lock, flags);
 
                        netdev_printk(KERN_DEBUG, nd->dev,
-                                     "ncsi: kicked channel %p\n", nc);
+                                     "NCSI: kicked channel %p\n", nc);
                        n++;
                }
        }
@@ -1431,7 +1466,7 @@ int ncsi_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
 
        nd = ncsi_find_dev(dev);
        if (!nd) {
-               netdev_warn(dev, "ncsi: No net_device?\n");
+               netdev_warn(dev, "NCSI: No net_device?\n");
                return 0;
        }
 
@@ -1442,7 +1477,7 @@ int ncsi_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
                n_vids++;
                if (vlan->vid == vid) {
                        netdev_printk(KERN_DEBUG, dev,
-                                     "vid %u already registered\n", vid);
+                                     "NCSI: vid %u already registered\n", vid);
                        return 0;
                }
        }
@@ -1461,7 +1496,7 @@ int ncsi_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
        vlan->vid = vid;
        list_add_rcu(&vlan->list, &ndp->vlan_vids);
 
-       netdev_printk(KERN_DEBUG, dev, "Added new vid %u\n", vid);
+       netdev_printk(KERN_DEBUG, dev, "NCSI: Added new vid %u\n", vid);
 
        found = ncsi_kick_channels(ndp) != 0;
 
@@ -1481,7 +1516,7 @@ int ncsi_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid)
 
        nd = ncsi_find_dev(dev);
        if (!nd) {
-               netdev_warn(dev, "ncsi: no net_device?\n");
+               netdev_warn(dev, "NCSI: no net_device?\n");
                return 0;
        }
 
@@ -1491,14 +1526,14 @@ int ncsi_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid)
        list_for_each_entry_safe(vlan, tmp, &ndp->vlan_vids, list)
                if (vlan->vid == vid) {
                        netdev_printk(KERN_DEBUG, dev,
-                                     "vid %u found, removing\n", vid);
+                                     "NCSI: vid %u found, removing\n", vid);
                        list_del_rcu(&vlan->list);
                        found = true;
                        kfree(vlan);
                }
 
        if (!found) {
-               netdev_err(dev, "ncsi: vid %u wasn't registered!\n", vid);
+               netdev_err(dev, "NCSI: vid %u wasn't registered!\n", vid);
                return -EINVAL;
        }
 
@@ -1542,9 +1577,7 @@ struct ncsi_dev *ncsi_register_dev(struct net_device *dev,
        for (i = 0; i < ARRAY_SIZE(ndp->requests); i++) {
                ndp->requests[i].id = i;
                ndp->requests[i].ndp = ndp;
-               setup_timer(&ndp->requests[i].timer,
-                           ncsi_request_timeout,
-                           (unsigned long)&ndp->requests[i]);
+               timer_setup(&ndp->requests[i].timer, ncsi_request_timeout, 0);
        }
 
        spin_lock_irqsave(&ncsi_dev_lock, flags);
@@ -1581,10 +1614,12 @@ int ncsi_start_dev(struct ncsi_dev *nd)
                return 0;
        }
 
-       if (ndp->flags & NCSI_DEV_HWA)
+       if (ndp->flags & NCSI_DEV_HWA) {
+               netdev_info(ndp->ndev.dev, "NCSI: Enabling HWA mode\n");
                ret = ncsi_enable_hwa(ndp);
-       else
+       } else {
                ret = ncsi_choose_active_channel(ndp);
+       }
 
        return ret;
 }
@@ -1615,6 +1650,7 @@ void ncsi_stop_dev(struct ncsi_dev *nd)
                }
        }
 
+       netdev_printk(KERN_DEBUG, ndp->ndev.dev, "NCSI: Stopping device\n");
        ncsi_report_link(ndp, true);
 }
 EXPORT_SYMBOL_GPL(ncsi_stop_dev);