cxgbei: Rework the pdu_append_data hook to support M_WAITOK.
- Only allocate 16K jumbo mbufs if the region of data to be appended is sufficiently large, and use a loop.
- Use m_getm2() to allocate a chain for data less than 16K, or if m_getjcl() fails.
- Use ENOMEM as the return value instead of '1' if the hook fails due to a memory allocation error.
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D29909
(cherry picked from commit 31df8ff73e3aa809146fae9baa6a96e1adf8526b)