diff options
Diffstat (limited to 'drivers/firewire/net.c')
-rw-r--r-- | drivers/firewire/net.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c index 08c674957af8..638e1f71284a 100644 --- a/drivers/firewire/net.c +++ b/drivers/firewire/net.c | |||
@@ -861,8 +861,8 @@ static void fwnet_receive_broadcast(struct fw_iso_context *context, | |||
861 | if (specifier_id == IANA_SPECIFIER_ID && ver == RFC2734_SW_VERSION) { | 861 | if (specifier_id == IANA_SPECIFIER_ID && ver == RFC2734_SW_VERSION) { |
862 | buf_ptr += 2; | 862 | buf_ptr += 2; |
863 | length -= IEEE1394_GASP_HDR_SIZE; | 863 | length -= IEEE1394_GASP_HDR_SIZE; |
864 | fwnet_incoming_packet(dev, buf_ptr, length, | 864 | fwnet_incoming_packet(dev, buf_ptr, length, source_node_id, |
865 | source_node_id, -1, true); | 865 | context->card->generation, true); |
866 | } | 866 | } |
867 | 867 | ||
868 | packet.payload_length = dev->rcv_buffer_size; | 868 | packet.payload_length = dev->rcv_buffer_size; |
@@ -958,7 +958,12 @@ static void fwnet_transmit_packet_done(struct fwnet_packet_task *ptask) | |||
958 | break; | 958 | break; |
959 | } | 959 | } |
960 | 960 | ||
961 | skb_pull(skb, ptask->max_payload); | 961 | if (ptask->dest_node == IEEE1394_ALL_NODES) { |
962 | skb_pull(skb, | ||
963 | ptask->max_payload + IEEE1394_GASP_HDR_SIZE); | ||
964 | } else { | ||
965 | skb_pull(skb, ptask->max_payload); | ||
966 | } | ||
962 | if (ptask->outstanding_pkts > 1) { | 967 | if (ptask->outstanding_pkts > 1) { |
963 | fwnet_make_sf_hdr(&ptask->hdr, RFC2374_HDR_INTFRAG, | 968 | fwnet_make_sf_hdr(&ptask->hdr, RFC2374_HDR_INTFRAG, |
964 | dg_size, fg_off, datagram_label); | 969 | dg_size, fg_off, datagram_label); |
@@ -1062,7 +1067,7 @@ static int fwnet_send_packet(struct fwnet_packet_task *ptask) | |||
1062 | smp_rmb(); | 1067 | smp_rmb(); |
1063 | node_id = dev->card->node_id; | 1068 | node_id = dev->card->node_id; |
1064 | 1069 | ||
1065 | p = skb_push(ptask->skb, 8); | 1070 | p = skb_push(ptask->skb, IEEE1394_GASP_HDR_SIZE); |
1066 | put_unaligned_be32(node_id << 16 | IANA_SPECIFIER_ID >> 8, p); | 1071 | put_unaligned_be32(node_id << 16 | IANA_SPECIFIER_ID >> 8, p); |
1067 | put_unaligned_be32((IANA_SPECIFIER_ID & 0xff) << 24 | 1072 | put_unaligned_be32((IANA_SPECIFIER_ID & 0xff) << 24 |
1068 | | RFC2734_SW_VERSION, &p[4]); | 1073 | | RFC2734_SW_VERSION, &p[4]); |