lkml.org 
[lkml]   [2017]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] RDMA/qedr: fix build error without ipv6
    Date
    When CONFIG_IPV6 disabled, we run into a link error:

    drivers/infiniband/hw/qedr/qedr_iw_cm.o: In function `qedr_addr6_resolve.isra.3':
    qedr_iw_cm.c:(.text+0x4e0): undefined reference to `ip6_route_output_flags'

    The ipv6 handling code is obviously not needed here, so this
    adds a compile-time check for the Kconfig symbol in all three
    places in the code that decide between ipv4 and ipv6.

    We don't have to worry about a link error wtih QEDR=y/IPV6=m, as
    that configuration is already prohibited by CONFIG_INFINIBAND
    depending on "m || IPV6 != m".

    Fixes: e411e0587e0d ("RDMA/qedr: Add iWARP connection management functions")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    drivers/infiniband/hw/qedr/qedr_iw_cm.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    diff --git a/drivers/infiniband/hw/qedr/qedr_iw_cm.c b/drivers/infiniband/hw/qedr/qedr_iw_cm.c
    index fe9b2b6149b0..2950d3f6ecb8 100644
    --- a/drivers/infiniband/hw/qedr/qedr_iw_cm.c
    +++ b/drivers/infiniband/hw/qedr/qedr_iw_cm.c
    @@ -98,7 +98,8 @@ qedr_iw_mpa_request(void *context, struct qed_iwarp_cm_event_params *params)
    event.event = IW_CM_EVENT_CONNECT_REQUEST;
    event.status = params->status;

    - if (params->cm_info->ip_version == QED_TCP_IPV4)
    + if (!IS_ENABLED(CONFIG_IPV6) ||
    + params->cm_info->ip_version == QED_TCP_IPV4)
    qedr_fill_sockaddr4(params->cm_info, &event);
    else
    qedr_fill_sockaddr6(params->cm_info, &event);
    @@ -522,7 +523,8 @@ int qedr_iw_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
    memset(cm_info->local_ip, 0, sizeof(cm_info->local_ip));
    memset(cm_info->remote_ip, 0, sizeof(cm_info->remote_ip));

    - if (cm_id->remote_addr.ss_family == AF_INET) {
    + if (!IS_ENABLED(CONFIG_IPV6) ||
    + cm_id->remote_addr.ss_family == AF_INET) {
    cm_info->ip_version = QED_TCP_IPV4;

    cm_info->remote_ip[0] = ntohl(raddr->sin_addr.s_addr);
    @@ -616,7 +618,8 @@ int qedr_iw_create_listen(struct iw_cm_id *cm_id, int backlog)
    iparams.event_cb = qedr_iw_event_handler;
    iparams.max_backlog = backlog;

    - if (cm_id->local_addr.ss_family == AF_INET) {
    + if (!IS_ENABLED(CONFIG_IPV6) ||
    + cm_id->local_addr.ss_family == AF_INET) {
    iparams.ip_version = QED_TCP_IPV4;
    memset(iparams.ip_addr, 0, sizeof(iparams.ip_addr));

    --
    2.9.0
    \
     
     \ /
      Last update: 2017-09-05 17:00    [W:4.811 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site