aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/usnic/usnic_common_util.h
diff options
context:
space:
mode:
authorUpinder Malhi <umalhi@cisco.com>2014-01-09 14:48:17 -0800
committerRoland Dreier <roland@purestorage.com>2014-01-14 00:44:44 -0800
commitc7845bcafe4d2ecd5c479fa64d1b425c21dde17c (patch)
tree14661c7eb6d065bb2bb66c7e199d2c5821e1745c /drivers/infiniband/hw/usnic/usnic_common_util.h
parentIB:usnic: Add UDP support to usnic_transport.[hc] (diff)
downloadlinux-dev-c7845bcafe4d2ecd5c479fa64d1b425c21dde17c.tar.xz
linux-dev-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.h17
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;