anchor.diff:        n_bits_buffered <= n_bits[1] - n_bits_used;
         data_buffered <= data_buff[1] >> n_bits_used;
         mask_buffered <= mask_buff[1] >> n_bytes_used;
  -
  -      Bool sop = False;
  -      if (sop_buff[1]) begin
  -         sop = True;
  -      end
  -
  -      let eth = EtherData {sop: sop, eop: False, mask: 'hffff, data: data};
  +      let eth = EtherData {sop: sop_buff[1], eop: False, mask: 'hffff, data: data};
  +      sop_buff[1] <= False;
  +      data_out_ff.enq(eth);
         dbprint(3, $format("rl_send_full_frame n_bytes_buffered=%d", n_bytes[1] - n_bytes_used, fshow(eth)));
      endrule
   
  
positive.code:       n_bits[0] <= n_bits_used;
        data_buff[0] <= data_in_ff.first.data;
        mask_buff[0] <= data_in_ff.first.mask;
        sop_buff[0] <= data_in_ff.first.sop;
        eop_buff[0] <= data_in_ff.first.eop;
  
        if (!eop) begin
           if (n_bytes_used + n_bytes_buffered >= fromInteger(valueOf(MaskWidth))) begin
  
negative.code:    endrule
  
     rule rl_eop_full_frame if (w_send_last2);
        let data = data_buff[1] << n_bits_buffered | data_buffered; 
        let n_bytes_used = fromInteger(valueOf(MaskWidth)) - n_bytes_buffered;
        UInt#(NumBits) n_bits_used = cExtend(n_bytes_used) << 3;
        n_bytes_buffered <= n_bytes[1] - n_bytes_used;
        n_bits_buffered <= n_bits[1] - n_bits_used;
        let eth = EtherData {sop: False, eop: True, mask: 'hffff, data: data};
        data_out_ff.enq(eth);
        dbprint(3, $format("rl_end_of_packet_full_frame n_bytes_buffered=%d", n_bytes[1] - n_bytes_used));
     endrule
  
  