Hi Akhil, I will address all issues except the last one with a comment below:

-       n = num;
-       sqn = esn_outb_update_sqn(sa, &n);
-       if (n != num)
+       n_sqn = nb_segs_t;
+       sqn = esn_outb_update_sqn(sa, &n_sqn);
+       if (n_sqn != nb_segs_t) {
                rte_errno = EOVERFLOW;
If it is an error condition, shouldn't we return.
Also, I do not see rte_errno being checked anywhere in the app/test or 
ipsec-secgw.
We are sending all packets that don't cause a SN overflow, and we set the error flag. The user will see that not all packets were sent and and rte_errno, and this is the behaviour that was in place before this patch.

+               /* if there are segmented packets find out how many can be
+                * sent until overflow occurs
+                */
+               if (nb_segs_t > num) { /* there is at least 1 */
+                       uint32_t seg_cnt = 0;
+                       for (i = 0; i < num && seg_cnt < n_sqn; i++)
+                               seg_cnt += nb_segs[i];
+                       num = i - 1;
+               } else {
+                       num = n_sqn; /* no segmented packets */
+               }
+       }

Reply via email to