@@ -3599,8 +3599,9 @@ int c4iw_create_listen(struct iw_cm_id *cm_id, int backlog)
int c4iw_destroy_listen(struct iw_cm_id *cm_id)
{
- int err;
struct c4iw_listen_ep *ep = to_listen_ep(cm_id);
+ bool ipv6 = false;
+ int err;
pr_debug("ep %p\n", ep);
@@ -3610,13 +3611,14 @@ int c4iw_destroy_listen(struct iw_cm_id *cm_id)
ep->com.local_addr.ss_family == AF_INET) {
err = cxgb4_remove_server_filter(
ep->com.dev->rdev.lldi.ports[0], ep->stid,
- ep->com.dev->rdev.lldi.rxq_ids[0], 0);
+ ep->com.dev->rdev.lldi.rxq_ids[0], ipv6);
} else {
struct sockaddr_in6 *sin6;
+ ipv6 = true;
c4iw_init_wr_wait(ep->com.wr_waitp);
err = cxgb4_remove_server(
ep->com.dev->rdev.lldi.ports[0], ep->stid,
- ep->com.dev->rdev.lldi.rxq_ids[0], 0);
+ ep->com.dev->rdev.lldi.rxq_ids[0], ipv6);
if (err)
goto done;
err = c4iw_wait_for_reply(&ep->com.dev->rdev, ep->com.wr_waitp,
While destroying ipv6 listening servers, set ipv6 field to '1' and pass it down to the HW. Fixes: 830662f6f032 ("RDMA/cxgb4: Add support for active and passive open connection with IPv6 address") Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com> --- drivers/infiniband/hw/cxgb4/cm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)