ieee1394: eth1394: Move common recv_init code to helper function
There is some common code between ether1394_open and ether1394_add_host which can be moved to a separate helper function for a slightly smaller eth1394 driver (-160 bytes on i386.) Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
70093cfde8
commit
09d7a96f5a
1 changed files with 32 additions and 41 deletions
|
@ -208,38 +208,45 @@ static struct hpsb_highlevel eth1394_highlevel = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* This is called after an "ifup" */
|
static int ether1394_recv_init(struct net_device *dev)
|
||||||
static int ether1394_open (struct net_device *dev)
|
|
||||||
{
|
{
|
||||||
struct eth1394_priv *priv = netdev_priv(dev);
|
struct eth1394_priv *priv = netdev_priv(dev);
|
||||||
int ret = 0;
|
|
||||||
|
priv->iso = hpsb_iso_recv_init(priv->host,
|
||||||
|
ETHER1394_ISO_BUF_SIZE,
|
||||||
|
ETHER1394_GASP_BUFFERS,
|
||||||
|
priv->broadcast_channel,
|
||||||
|
HPSB_ISO_DMA_PACKET_PER_BUFFER,
|
||||||
|
1, ether1394_iso);
|
||||||
|
if (priv->iso == NULL) {
|
||||||
|
ETH1394_PRINT(KERN_ERR, dev->name,
|
||||||
|
"Could not allocate isochronous receive "
|
||||||
|
"context for the broadcast channel\n");
|
||||||
|
priv->bc_state = ETHER1394_BC_ERROR;
|
||||||
|
return -EAGAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hpsb_iso_recv_start(priv->iso, -1, (1 << 3), -1) < 0)
|
||||||
|
priv->bc_state = ETHER1394_BC_STOPPED;
|
||||||
|
else
|
||||||
|
priv->bc_state = ETHER1394_BC_RUNNING;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is called after an "ifup" */
|
||||||
|
static int ether1394_open(struct net_device *dev)
|
||||||
|
{
|
||||||
|
struct eth1394_priv *priv = netdev_priv(dev);
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* Something bad happened, don't even try */
|
/* Something bad happened, don't even try */
|
||||||
if (priv->bc_state == ETHER1394_BC_ERROR) {
|
if (priv->bc_state == ETHER1394_BC_ERROR) {
|
||||||
/* we'll try again */
|
/* we'll try again */
|
||||||
priv->iso = hpsb_iso_recv_init(priv->host,
|
ret = ether1394_recv_init(dev);
|
||||||
ETHER1394_ISO_BUF_SIZE,
|
if (ret)
|
||||||
ETHER1394_GASP_BUFFERS,
|
return ret;
|
||||||
priv->broadcast_channel,
|
|
||||||
HPSB_ISO_DMA_PACKET_PER_BUFFER,
|
|
||||||
1, ether1394_iso);
|
|
||||||
if (priv->iso == NULL) {
|
|
||||||
ETH1394_PRINT(KERN_ERR, dev->name,
|
|
||||||
"Could not allocate isochronous receive "
|
|
||||||
"context for the broadcast channel\n");
|
|
||||||
priv->bc_state = ETHER1394_BC_ERROR;
|
|
||||||
ret = -EAGAIN;
|
|
||||||
} else {
|
|
||||||
if (hpsb_iso_recv_start(priv->iso, -1, (1 << 3), -1) < 0)
|
|
||||||
priv->bc_state = ETHER1394_BC_STOPPED;
|
|
||||||
else
|
|
||||||
priv->bc_state = ETHER1394_BC_RUNNING;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
netif_start_queue (dev);
|
netif_start_queue (dev);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -628,23 +635,7 @@ static void ether1394_add_host (struct hpsb_host *host)
|
||||||
* be checked when the eth device is opened. */
|
* be checked when the eth device is opened. */
|
||||||
priv->broadcast_channel = host->csr.broadcast_channel & 0x3f;
|
priv->broadcast_channel = host->csr.broadcast_channel & 0x3f;
|
||||||
|
|
||||||
priv->iso = hpsb_iso_recv_init(host,
|
ether1394_recv_init(dev);
|
||||||
ETHER1394_ISO_BUF_SIZE,
|
|
||||||
ETHER1394_GASP_BUFFERS,
|
|
||||||
priv->broadcast_channel,
|
|
||||||
HPSB_ISO_DMA_PACKET_PER_BUFFER,
|
|
||||||
1, ether1394_iso);
|
|
||||||
if (priv->iso == NULL) {
|
|
||||||
ETH1394_PRINT(KERN_ERR, dev->name,
|
|
||||||
"Could not allocate isochronous receive context "
|
|
||||||
"for the broadcast channel\n");
|
|
||||||
priv->bc_state = ETHER1394_BC_ERROR;
|
|
||||||
} else {
|
|
||||||
if (hpsb_iso_recv_start(priv->iso, -1, (1 << 3), -1) < 0)
|
|
||||||
priv->bc_state = ETHER1394_BC_STOPPED;
|
|
||||||
else
|
|
||||||
priv->bc_state = ETHER1394_BC_RUNNING;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
out:
|
out:
|
||||||
if (dev)
|
if (dev)
|
||||||
|
|
Loading…
Add table
Reference in a new issue