= Benchmark: Jumbo Frames = WARPLab 7 supports "jumbo frames," which are Ethernet packets larger than 1500 bytes. WARPLab 7 supports packet sizes up to 9014 bytes long. The benefit of longer packets is that fewer packet exchanges are required in the burst of transmissions that occur when reading or writing large numbers of samples. On our computers, jumbo packets improve the speed for the [wiki:WARPLab/Reference/Commands/Baseband#read_iq read_IQ] and [wiki:WARPLab/Reference/Commands/Baseband#write_iq write_IQ] commands significantly: [[Image(jumbo_char.png,width=600)]] This plot shows the amount of time each command takes to read or write a full 32768 (2^15^) samples to a buffer. The WARPLab 7 script used to generate the above plot is provided here: {{{ clear node node = wl_initNodes(1); [RFA,RFB] = wl_getInterfaceIDs(node); NUMITER = 100; NUMLENGTHS = 6; maxPayloadVec = [1000,floor(linspace(1470,double(node.transport.maxPayload),NUMLENGTHS-1))]; IQvec = complex(randn(node.baseband.txIQLen,1),randn(node.baseband.txIQLen,1)); IQvec = IQvec./(max(abs(IQvec))); duration_write = zeros(NUMITER,NUMLENGTHS); duration_read = zeros(NUMITER,NUMLENGTHS); mean_duration_write = zeros(1,NUMLENGTHS); std_duration_write = zeros(1,NUMLENGTHS); mean_duration_read = zeros(1,NUMLENGTHS); std_duration_read = zeros(1,NUMLENGTHS); for k = NUMLENGTHS:-1:1 fprintf('Current maxPayload: %d\n',maxPayloadVec(k)); node.transport.maxPayload = maxPayloadVec(k); for m = NUMITER:-1:1 currTime = tic; wl_basebandCmd(node,RFA,'write_IQ',IQvec); duration_write(m,k) = toc(currTime); currTime = tic; wl_basebandCmd(node,RFA,'read_IQ',0,node.baseband.rxIQLen); duration_read(m,k) = toc(currTime); end mean_duration_write(k) = mean(duration_write(:,k)); std_duration_write(k) = std(duration_write(:,k)); mean_duration_read(k) = mean(duration_read(:,k)); std_duration_read(k) = std(duration_read(:,k)); end %% Plotting figure(1);clf errorbar(maxPayloadVec,mean_duration_write,std_duration_write,'LineWidth',2) hold on errorbar(maxPayloadVec,mean_duration_read,std_duration_read,'r','LineWidth',2) grid on xlabel('Payload Size') ylabel('Duration (Seconds)') title('Duration of Commands vs Payload Size') legend('write_IQ','read_IQ') myAxis = axis; myAxis(3) = 0; axis(myAxis); standardPayload = 1470; H = line([standardPayload standardPayload],[myAxis(3),myAxis(4)]); set(H,'Color',[0 0 0]) set(H,'LineWidth',2) H = text(standardPayload + .01*myAxis(2),.9*myAxis(4),'Standard Payload Size'); set(H,'FontName','Ariel') set(H,'FontWeight','bold') hold off }}}