Sending sequencer control knobs to monitor

  1. How does one send a data item that is received by the driver (from the sequencer) to the monitor ?? The data item has a field which is controlled using control knobs of the sequencer and i want that value to be passed to the monitor. (Line side is sending say N bits of serial data which changes from one data item to another. So i want to tell the monitor to collect those N bits).

to clarify my need further here is a code snippet:
Goal: value in the DATA_LENGTH_REGISTER on top level should control the DATA_LENGTH value in the sequence item and pass this on to the monitor.
Problem: I am not able to tell the monitor to sample DATA_LENGTH number of times. Rest all is working fine.

class adc_line_data_item extends ovm_sequence_item
rand int DATA_LENGTH;
constraint DATA_LENGTH_c {DATA_LENGTH inside {[10:16]} }


endclass

class sendLineData_seq extends ovm_sequence #(adc_line_data_item);
ovm_do_with (rsp, {DATA_LENGTH==p_sequencer.DATA_LENGTH_knob;…});

endclass

class adc_line_sequencer extends ovm_sequencer #(adc_line_data_item);
logic DATA_LENGTH_knob;

endclass

class adc_data_test extends ovm_test;

forever begin
@(adc_top.clock);
adc_tb.adc_env.adc_line_agent.sequencer.DATA_LENGTH_knob=adc_top.DATA_LENGTH_REGISTER;

end
endclass

class adc_line_monitor extends ovm_monitor;

task collect_adc_data();

for (int j=0;j<DATA_LENGTH;j++) begin
@posedge(vif.clk);
adc_pkt[j]=vif.data_in;
endtask: collect_adc_data

In adc_line_monitor how do i feed the DATA_LENGTH value to the monitor ?? It keeps changing for every data item sent to the driver. Should i send the same driver data item to the monitor (if so how is this done ?) or is there a way to access the sequencer DATA_LENGTH_knob value through construct similar to p_sequencer by the monitor ?