caif-hsi: Fix merge issues.
authorSjur Brændeland <sjur.brandeland@stericsson.com>
Thu, 28 Jun 2012 20:36:20 +0000 (20:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 29 Jun 2012 07:46:53 +0000 (00:46 -0700)
Fix the failing merge in net-next by reverting the last
net-next merge for caif_hsi.c and then merge in the commit:
"caif-hsi: Bugfix - Piggyback'ed embedded CAIF frame lost"
from the net repository.

The commit:"caif-hsi: Add missing return in error path" from
net repository was dropped, as it changed code previously removed in the
net-next repository.

Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/caif/caif_hsi.c

index 087eb83454c0ad47e96093c3ba6977568a97ffa8..0def8b3106f48e8d47c72f5d25bd344224986ecc 100644 (file)
@@ -1131,51 +1131,7 @@ static void cfhsi_setup(struct net_device *dev)
        cfhsi->cfdev.use_stx = false;
        cfhsi->cfdev.use_fcs = false;
        cfhsi->ndev = dev;
-}
-
-int cfhsi_probe(struct platform_device *pdev)
-{
-       struct cfhsi_ops *(*get_ops)(void);
-       struct cfhsi *cfhsi = NULL;
-       struct net_device *ndev;
-       int res;
-
-       ndev = alloc_netdev(sizeof(struct cfhsi), "cfhsi%d", cfhsi_setup);
-       if (!ndev)
-               return -ENODEV;
-
-       cfhsi = netdev_priv(ndev);
-       cfhsi->ndev = ndev;
-       cfhsi->pdev = pdev;
-
-       get_ops = symbol_get(cfhsi_get_ops);
-       if (!get_ops) {
-               pr_err("%s: failed to get the cfhsi_ops\n", __func__);
-               return -ENODEV;
-       }
-
-       /* Assign the HSI device. */
-       cfhsi->ops = (*get_ops)();
-       if (!cfhsi->ops) {
-               pr_err("%s: failed to get the cfhsi_ops\n", __func__);
-               goto err;
-       }
-
-       /* Assign the driver to this HSI device. */
-       cfhsi->ops->cb_ops = &cfhsi->cb_ops;
-       res = register_netdevice(ndev);
-       if (res) {
-               dev_err(&ndev->dev, "%s: Registration error: %d.\n",
-                       __func__, res);
-               free_netdev(ndev);
-       }
-       /* Add CAIF HSI device to list. */
-       list_add_tail(&cfhsi->list, &cfhsi_list);
-
-       return res;
-err:
-       symbol_put(cfhsi_get_ops);
-       return -ENODEV;
+       cfhsi->cfg = hsi_default_config;
 }
 
 static int cfhsi_open(struct net_device *ndev)
@@ -1454,6 +1410,7 @@ static int caif_hsi_newlink(struct net *src_net, struct net_device *dev,
                          struct nlattr *tb[], struct nlattr *data[])
 {
        struct cfhsi *cfhsi = NULL;
+       struct cfhsi_ops *(*get_ops)(void);
 
        ASSERT_RTNL();
 
@@ -1461,7 +1418,32 @@ static int caif_hsi_newlink(struct net *src_net, struct net_device *dev,
        cfhsi_netlink_parms(data, cfhsi);
        dev_net_set(cfhsi->ndev, src_net);
 
+       get_ops = symbol_get(cfhsi_get_ops);
+       if (!get_ops) {
+               pr_err("%s: failed to get the cfhsi_ops\n", __func__);
+               return -ENODEV;
+       }
+
+       /* Assign the HSI device. */
+       cfhsi->ops = (*get_ops)();
+       if (!cfhsi->ops) {
+               pr_err("%s: failed to get the cfhsi_ops\n", __func__);
+               goto err;
+       }
+
+       /* Assign the driver to this HSI device. */
+       cfhsi->ops->cb_ops = &cfhsi->cb_ops;
+       if (register_netdevice(dev)) {
+               pr_warn("%s: caif_hsi device registration failed\n", __func__);
+               goto err;
+       }
+       /* Add CAIF HSI device to list. */
+       list_add_tail(&cfhsi->list, &cfhsi_list);
+
        return 0;
+err:
+       symbol_put(cfhsi_get_ops);
+       return -ENODEV;
 }
 
 static struct rtnl_link_ops caif_hsi_link_ops __read_mostly = {