RSTP testing - PATCH: BPDU length calculation
authorAji, Srinivas <Aji_Srinivas@emc.com>
Thu, 10 May 2007 23:37:26 +0000 (16:37 -0700)
committerStephen Hemminger <shemminger@linux-foundation.org>
Fri, 11 May 2007 02:34:33 +0000 (19:34 -0700)
   The bpdu_len sent to STP_OUT_tx_bpdu() excludes the ethernet and
   and LLC headers, though the bpdu pointer points to the start of the
   ethernet header. Given the types in rstplib/stp_bpdu.h, we need to
   be sending a packet with (base, len) given by
   (bpdu, bpdu_len + sizeof(MAC_HEADER_T) + sizeof(ETH_HEADER_T))
   MAC_HEADER_T is dest and source ethernet addresses and ETH_HEADER_T
   is the 802.2 part.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
bridge_track.c

index 67f6252..da53d9b 100644 (file)
@@ -763,8 +763,7 @@ STP_OUT_tx_bpdu(IN int port_index, IN int vlan_id,
        TST(vlan_id == 0, 0);
 
        packet_send(port->if_index, bpdu,
-                   bpdu_len + sizeof(ETH_HEADER_T)
-                   + sizeof(BPDU_HEADER_T) + sizeof(BPDU_BODY_T));
+                   bpdu_len + sizeof(MAC_HEADER_T) + sizeof(ETH_HEADER_T));
        return 0;
 }