firewire net: Omit checking dev->broadcast_rcv_context in fwnet_broadcast_start().
dev->broadcast_rcv_context is always non-NULL if dev->broadcast_state is not FWNET_BROADCAST_ERROR. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
Родитель
f60bac4bc9
Коммит
f2090594dd
|
@ -1154,6 +1154,7 @@ static int fwnet_broadcast_start(struct fwnet_device *dev)
|
||||||
unsigned max_receive;
|
unsigned max_receive;
|
||||||
struct fw_iso_packet packet;
|
struct fw_iso_packet packet;
|
||||||
unsigned long offset;
|
unsigned long offset;
|
||||||
|
void **ptrptr;
|
||||||
unsigned u;
|
unsigned u;
|
||||||
|
|
||||||
if (dev->broadcast_state != FWNET_BROADCAST_ERROR)
|
if (dev->broadcast_state != FWNET_BROADCAST_ERROR)
|
||||||
|
@ -1162,43 +1163,37 @@ static int fwnet_broadcast_start(struct fwnet_device *dev)
|
||||||
max_receive = 1U << (dev->card->max_receive + 1);
|
max_receive = 1U << (dev->card->max_receive + 1);
|
||||||
num_packets = (FWNET_ISO_PAGE_COUNT * PAGE_SIZE) / max_receive;
|
num_packets = (FWNET_ISO_PAGE_COUNT * PAGE_SIZE) / max_receive;
|
||||||
|
|
||||||
if (!dev->broadcast_rcv_context) {
|
context = fw_iso_context_create(dev->card, FW_ISO_CONTEXT_RECEIVE,
|
||||||
void **ptrptr;
|
IEEE1394_BROADCAST_CHANNEL,
|
||||||
|
dev->card->link_speed, 8,
|
||||||
context = fw_iso_context_create(dev->card,
|
fwnet_receive_broadcast, dev);
|
||||||
FW_ISO_CONTEXT_RECEIVE, IEEE1394_BROADCAST_CHANNEL,
|
if (IS_ERR(context)) {
|
||||||
dev->card->link_speed, 8, fwnet_receive_broadcast, dev);
|
retval = PTR_ERR(context);
|
||||||
if (IS_ERR(context)) {
|
goto failed_context_create;
|
||||||
retval = PTR_ERR(context);
|
|
||||||
goto failed_context_create;
|
|
||||||
}
|
|
||||||
|
|
||||||
retval = fw_iso_buffer_init(&dev->broadcast_rcv_buffer,
|
|
||||||
dev->card, FWNET_ISO_PAGE_COUNT, DMA_FROM_DEVICE);
|
|
||||||
if (retval < 0)
|
|
||||||
goto failed_buffer_init;
|
|
||||||
|
|
||||||
ptrptr = kmalloc(sizeof(void *) * num_packets, GFP_KERNEL);
|
|
||||||
if (!ptrptr) {
|
|
||||||
retval = -ENOMEM;
|
|
||||||
goto failed_ptrs_alloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->broadcast_rcv_buffer_ptrs = ptrptr;
|
|
||||||
for (u = 0; u < FWNET_ISO_PAGE_COUNT; u++) {
|
|
||||||
void *ptr;
|
|
||||||
unsigned v;
|
|
||||||
|
|
||||||
ptr = kmap(dev->broadcast_rcv_buffer.pages[u]);
|
|
||||||
for (v = 0; v < num_packets / FWNET_ISO_PAGE_COUNT; v++)
|
|
||||||
*ptrptr++ = (void *)
|
|
||||||
((char *)ptr + v * max_receive);
|
|
||||||
}
|
|
||||||
dev->broadcast_rcv_context = context;
|
|
||||||
} else {
|
|
||||||
context = dev->broadcast_rcv_context;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retval = fw_iso_buffer_init(&dev->broadcast_rcv_buffer, dev->card,
|
||||||
|
FWNET_ISO_PAGE_COUNT, DMA_FROM_DEVICE);
|
||||||
|
if (retval < 0)
|
||||||
|
goto failed_buffer_init;
|
||||||
|
|
||||||
|
ptrptr = kmalloc(sizeof(void *) * num_packets, GFP_KERNEL);
|
||||||
|
if (!ptrptr) {
|
||||||
|
retval = -ENOMEM;
|
||||||
|
goto failed_ptrs_alloc;
|
||||||
|
}
|
||||||
|
|
||||||
|
dev->broadcast_rcv_buffer_ptrs = ptrptr;
|
||||||
|
for (u = 0; u < FWNET_ISO_PAGE_COUNT; u++) {
|
||||||
|
void *ptr;
|
||||||
|
unsigned v;
|
||||||
|
|
||||||
|
ptr = kmap(dev->broadcast_rcv_buffer.pages[u]);
|
||||||
|
for (v = 0; v < num_packets / FWNET_ISO_PAGE_COUNT; v++)
|
||||||
|
*ptrptr++ = (void *) ((char *)ptr + v * max_receive);
|
||||||
|
}
|
||||||
|
dev->broadcast_rcv_context = context;
|
||||||
|
|
||||||
packet.payload_length = max_receive;
|
packet.payload_length = max_receive;
|
||||||
packet.interrupt = 1;
|
packet.interrupt = 1;
|
||||||
packet.skip = 0;
|
packet.skip = 0;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче