rocker: Add TLV parsing macros

As a first step in adding the tlv parsing code, I've ported over the macros use
for both userspace and kernel space netlink attribute manipulation. I've renamed
them so they're a bit more legible when being used in the rocker code.  I also
removed the zero length array from the rocker_dma_tlv structrue in this patch,
as the macros don't need it (they find the data by offset computation)

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Scott Feldman <sfeldma@cumulusnetworks.com>
CC: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
rocker: Add TLV definitions from rocker register spec

Add all the TLV types from the rocker specification.  Note that I updated the
spec at the same time, to consolidate a few of the TLV's specifically, all the
TLB_<feature>_CMD tlvs are now a single TLV per feature, with the value of the
TLV being one of CMD_ADD, CMD_DEL, CMD_MOD, or CMD_GET_STATS.  This saves us
having to pollute the TLV namespace with a separate TLV that does the same thing
for each features

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Scott Feldman <sfeldma@cumulusnetworks.com>
CC: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Add example figure of descriptor buffer packed with several TLVs.

Add DMA_DESC_TLV_SIZE to indicate how many bytes of descriptor buffer
contain TLVs.  Must be <= DMA_DESC_BUF_SIZE.