| 145 | } |
| 146 | |
| 147 | void PacketPool::PostPopulate() { |
| 148 | PoolPrivate priv = { |
| 149 | .dpdk_priv = {.mbuf_data_room_size = SNBUF_HEADROOM + SNBUF_DATA, |
| 150 | .mbuf_priv_size = SNBUF_RESERVE}, |
| 151 | .owner = this}; |
| 152 | |
| 153 | rte_pktmbuf_pool_init(pool_, &priv.dpdk_priv); |
| 154 | rte_mempool_obj_iter(pool_, InitPacket, nullptr); |
| 155 | |
| 156 | LOG(INFO) << name_ << " has been created with " << Capacity() << " packets"; |
| 157 | if (Capacity() == 0) { |
| 158 | LOG(FATAL) << name_ << " has no packets allocated\n" |
| 159 | << "Troubleshooting:\n" |
| 160 | << " - Check 'ulimit -l'\n" |
| 161 | << " - Do you have enough memory on the machine?\n" |
| 162 | << " - Maybe memory is too fragmented. Try rebooting.\n"; |
| 163 | } |
| 164 | } |
| 165 | |
| 166 | PlainPacketPool::PlainPacketPool(size_t capacity, int socket_id) |
| 167 | : PacketPool(capacity, socket_id) { |
nothing calls this directly
no outgoing calls
no test coverage detected