igc: Enhance Qbv scheduling by using first flag bit
The I225 hardware has a limitation that packets can only be scheduled
in the [0, cycle-time] interval. So, scheduling a packet to the start
of the next cycle doesn't usually work.
To overcome this, we use the Transmit Descriptor first flag to indicates
that a packet should be the first packet (from a queue) in a cycle
according to the section 7.5.2.9.3.4 The First Packet on Each QBV Cycle
in Intel Discrete I225/6 User Manual.
But this only works if there was any packet from that queue during the
current cycle, to avoid this issue, we issue an empty packet if that's
not the case. Also require one more descriptor to be available, to take
into account the empty packet that might be issued.
Test Setup:
Talker: Use l2_tai to generate the launchtime into packet load.
Listener: Use timedump.c to compute the delta between packet arrival
and LaunchTime packet payload.
Test Result:
Before:
1666000610127300000,
1666000610127300096,96,621273
1666000610127400000,
1666000610127400192,192,621274
1666000610127500000,
1666000610127500032,32,621275
1666000610127600000,
1666000610127600128,128,621276
1666000610127700000,
1666000610127700224,224,621277
1666000610127800000,
1666000610127800064,64,621278
1666000610127900000,
1666000610127900160,160,621279
1666000610128000000,
1666000610128000000,0,621280
1666000610128100000,
1666000610128100096,96,621281
1666000610128200000,
1666000610128200192,192,621282
1666000610128300000,
1666000610128300032,32,621283
1666000610128400000,
1666000610128301056,-98944,621284
1666000610128500000,
1666000610128302080,-197920,621285
1666000610128600000,
1666000610128302848,-297152,621286
1666000610128700000,
1666000610128303872,-396128,621287
1666000610128800000,
1666000610128304896,-495104,621288
1666000610128900000,
1666000610128305664,-594336,621289
1666000610129000000,
1666000610128306688,-693312,621290
1666000610129100000,
1666000610128307712,-792288,621291
1666000610129200000,
1666000610128308480,-891520,621292
1666000610129300000,
1666000610128309504,-990496,621293
1666000610129400000,
1666000610128310528,-
1089472,621294
1666000610129500000,
1666000610128311296,-
1188704,621295
1666000610129600000,
1666000610128312320,-
1287680,621296
1666000610129700000,
1666000610128313344,-
1386656,621297
1666000610129800000,
1666000610128314112,-
1485888,621298
1666000610129900000,
1666000610128315136,-
1584864,621299
1666000610130000000,
1666000610128316160,-
1683840,621300
1666000610130100000,
1666000610128316928,-
1783072,621301
1666000610130200000,
1666000610128317952,-
1882048,621302
1666000610130300000,
1666000610128318976,-
1981024,621303
1666000610130400000,
1666000610128319744,-
2080256,621304
1666000610130500000,
1666000610128320768,-
2179232,621305
1666000610130600000,
1666000610128321792,-
2278208,621306
1666000610130700000,
1666000610128322816,-
2377184,621307
1666000610130800000,
1666000610128323584,-
2476416,621308
1666000610130900000,
1666000610128324608,-
2575392,621309
1666000610131000000,
1666000610128325632,-
2674368,621310
1666000610131100000,
1666000610128326400,-
2773600,621311
1666000610131200000,
1666000610128327424,-
2872576,621312
1666000610131300000,
1666000610128328448,-
2971552,621313
1666000610131400000,
1666000610128329216,-
3070784,621314
1666000610131500000,
1666000610131500032,32,621315
1666000610131600000,
1666000610131600128,128,621316
1666000610131700000,
1666000610131700224,224,621317
After:
1666073510646200000,
1666073510646200064,64,
2676462
1666073510646300000,
1666073510646300160,160,
2676463
1666073510646400000,
1666073510646400256,256,
2676464
1666073510646500000,
1666073510646500096,96,
2676465
1666073510646600000,
1666073510646600192,192,
2676466
1666073510646700000,
1666073510646700032,32,
2676467
1666073510646800000,
1666073510646800128,128,
2676468
1666073510646900000,
1666073510646900224,224,
2676469
1666073510647000000,
1666073510647000064,64,
2676470
1666073510647100000,
1666073510647100160,160,
2676471
1666073510647200000,
1666073510647200256,256,
2676472
1666073510647300000,
1666073510647300096,96,
2676473
1666073510647400000,
1666073510647400192,192,
2676474
1666073510647500000,
1666073510647500032,32,
2676475
1666073510647600000,
1666073510647600128,128,
2676476
1666073510647700000,
1666073510647700224,224,
2676477
1666073510647800000,
1666073510647800064,64,
2676478
1666073510647900000,
1666073510647900160,160,
2676479
1666073510648000000,
1666073510648000000,0,
2676480
1666073510648100000,
1666073510648100096,96,
2676481
1666073510648200000,
1666073510648200192,192,
2676482
1666073510648300000,
1666073510648300032,32,
2676483
1666073510648400000,
1666073510648400128,128,
2676484
1666073510648500000,
1666073510648500224,224,
2676485
1666073510648600000,
1666073510648600064,64,
2676486
1666073510648700000,
1666073510648700160,160,
2676487
1666073510648800000,
1666073510648800000,0,
2676488
1666073510648900000,
1666073510648900096,96,
2676489
1666073510649000000,
1666073510649000192,192,
2676490
1666073510649100000,
1666073510649100032,32,
2676491
1666073510649200000,
1666073510649200128,128,
2676492
1666073510649300000,
1666073510649300224,224,
2676493
1666073510649400000,
1666073510649400064,64,
2676494
1666073510649500000,
1666073510649500160,160,
2676495
1666073510649600000,
1666073510649600000,0,
2676496
1666073510649700000,
1666073510649700096,96,
2676497
1666073510649800000,
1666073510649800192,192,
2676498
1666073510649900000,
1666073510649900032,32,
2676499
1666073510650000000,
1666073510650000128,128,
2676500
Fixes:
82faa9b79950 ("igc: Add support for ETF offloading")
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Co-developed-by: Aravindhan Gunasekaran <aravindhan.gunasekaran@intel.com>
Signed-off-by: Aravindhan Gunasekaran <aravindhan.gunasekaran@intel.com>
Co-developed-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
Signed-off-by: Muhammad Husaini Zulkifli <muhammad.husaini.zulkifli@intel.com>
Signed-off-by: Malli C <mallikarjuna.chilakala@intel.com>
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>