diff options
author | Upinder Malhi <umalhi@cisco.com> | 2014-01-09 14:48:17 -0800 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-01-14 00:44:44 -0800 |
commit | c7845bcafe4d2ecd5c479fa64d1b425c21dde17c (patch) | |
tree | 14661c7eb6d065bb2bb66c7e199d2c5821e1745c /drivers/infiniband/hw/usnic/usnic_common_util.h | |
parent | 6214105460842759020bdd7f4dbb50afa1be9d17 (diff) | |
download | talos-obmc-linux-c7845bcafe4d2ecd5c479fa64d1b425c21dde17c.tar.gz talos-obmc-linux-c7845bcafe4d2ecd5c479fa64d1b425c21dde17c.zip |
IB/usnic: Add UDP support in u*verbs.c, u*main.c and u*util.h
Add supports for:
1) Parsing the socket file descriptor pass down from userspace.
2) IP notifiers
3) Encoding the IP in the GID
4) Other aux. changes to support UDP
Signed-off-by: Upinder Malhi <umalhi@cisco.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/usnic/usnic_common_util.h')
-rw-r--r-- | drivers/infiniband/hw/usnic/usnic_common_util.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/usnic/usnic_common_util.h b/drivers/infiniband/hw/usnic/usnic_common_util.h index 128550a4f9e2..afd8bfa379ed 100644 --- a/drivers/infiniband/hw/usnic/usnic_common_util.h +++ b/drivers/infiniband/hw/usnic/usnic_common_util.h @@ -36,6 +36,23 @@ usnic_mac_to_gid(const char *const mac, char *raw_gid) } static inline void +usnic_mac_ip_to_gid(const char *const mac, const uint32_t inaddr, char *raw_gid) +{ + raw_gid[0] = 0xfe; + raw_gid[1] = 0x80; + memset(&raw_gid[2], 0, 2); + memcpy(&raw_gid[4], &inaddr, 4); + raw_gid[8] = mac[0]^2; + raw_gid[9] = mac[1]; + raw_gid[10] = mac[2]; + raw_gid[11] = 0xff; + raw_gid[12] = 0xfe; + raw_gid[13] = mac[3]; + raw_gid[14] = mac[4]; + raw_gid[15] = mac[5]; +} + +static inline void usnic_write_gid_if_id_from_mac(char *mac, char *raw_gid) { raw_gid[8] = mac[0]^2; |