aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/net.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firewire/net.c')
-rw-r--r--drivers/firewire/net.c13
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]);