Bonding the two interfaces on one card is unlikely to be an issue. After all, bonding doesn't split the frame across multiple links. A frame still comes in exactly one link and leaves exactly one link. If the link it comes in and the link it leaves are on the same card, it's likely to be able to forward it with no host involvement.
Bonding a ConnextX interface on one card with a ConnectX interface on another card would probably break the accelerated data path. It's possible to skip transmit link selection and just select the link the same card has access to, but that could get thorny if your bonds don't overlap precisely (e.g, if bond1 is eth1-02 and eth2-01, and bond2 is eth2-02 and eth3-01). Simpler to just disable the accelerated forwarding rather than risk unpredictable flow paths.
All that said, with 100g, I would just skip bonding entirely. It's fast enough you almost certainly don't need a bond for the throughput, and there are enough questions I would simply take my availability design to a higher level to avoid them.
As for the number of interfaces available:
- QLS250 - 1 double-width 2x100g card
- QLS450 - 2 double-width 2x100g cards
- QLS650 - 3 double-width 2x100g cards
- QLS800 - 4 double-width 2x100g cards
- 19100 with 4 single-width 2x100g cards
All the QLS boxes come with redundant SSDs, LOM, maxed RAM, and 5 VS license slots. The 19100 comes with only one SSD (SSDs are reliable enough this doesn't concern me much), no LOM, no VS license slots, and 1/3 as much RAM (64 GB) as the QLS450, QLS650, or QLS800 (all 192 GB). If you need full inspection, the 19200 and 29000-series have a higher performance ceiling than the QLS boxes.
ADMIN NOTE: price information removed