From patchwork Wed Jun 7 21:07:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 103314 Delivered-To: patch@linaro.org Received: by 10.140.91.77 with SMTP id y71csp2133997qgd; Wed, 7 Jun 2017 14:08:31 -0700 (PDT) X-Received: by 10.99.150.2 with SMTP id c2mr34522367pge.27.1496869711131; Wed, 07 Jun 2017 14:08:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1496869711; cv=none; d=google.com; s=arc-20160816; b=Nxd9gX0VCsl59w2j5cv0gx3mBey70PjvOeZst7lnMOL/oedIiMyzN8LcAk+VqBc0Xu r7s1+yAng2kaOSSLf+1x1vtQp2+HtSPSXSRIbpthQE9m2lMBPMOz5GWLN4a6wTsBCV1v hJYr7xqJ2Y+QLyvGI1akuXhJLCANMMyQFHFKmbDT1Z1ZXkRFxs9ub51ZC6rBmi/pYa+J Hk4v+HUwC08XF+X2xJNCjv24fzZKU0yw9lJp67mhbOvHHMQSPrNlXT9OM+NP7Mfc9Jrc eLxWHNxnC6JCsp11cfkkWsdWatdA+LFE3bX6AJv//7mB5mKccwAeucIFN9WXOVGPJAWK V4og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=0LPKQn7O6EM8KCGgtZCIZAlN695W5rgDPvZKWmqLZEY=; b=FAjfYokDeQrNQJSbq279G6s7g1in1tEZ7juGFAron4oRWJDjcegeej5bu71LER++9E DdZ4iCdnYqH372J7LbdF7lGG0Z/hJGf6VqgSi1UzwihtS3cLawgnvf268Aw15s9iMyXg E1dCE6M3WmCy6iLv6FBDX7wG3dirMW982EDKFDHKZ3y9NF+8idXy7+kgJPl8N+fgQvbq 3mOQHVHTJUyPa1w9CDWBJsG/emy28ZSWLHwzX5BInU7sDJ7JnQ6ziH6tCGlzapPpBgMD IkLHwHDK++1WVvIfN7QLzHTHPBIaqs54v7e5NigGXSHCeMEa1GOuAE6Zq63hPADukhMv 7TGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s82si2622156pgs.324.2017.06.07.14.08.31; Wed, 07 Jun 2017 14:08:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751524AbdFGVIM (ORCPT + 6 others); Wed, 7 Jun 2017 17:08:12 -0400 Received: from mail-pg0-f45.google.com ([74.125.83.45]:35370 "EHLO mail-pg0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751910AbdFGVHs (ORCPT ); Wed, 7 Jun 2017 17:07:48 -0400 Received: by mail-pg0-f45.google.com with SMTP id k71so9095502pgd.2 for ; Wed, 07 Jun 2017 14:07:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0LPKQn7O6EM8KCGgtZCIZAlN695W5rgDPvZKWmqLZEY=; b=eWX0zEhztOiv/6+CfRA7eR0BImRBwli50Vkjaxc1RzwTTgthKjV+3ir0ocgQtCYhdz dNpdGAyvAgkl9MabjrFNSd1WcGmG3yHKCWDs0CO9rAPB/TddpjKYvZqiFTUybwSHdv9u Np68FnDa3m/GP7dCKdAuMd3KVXmiuWyiWBw2c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=0LPKQn7O6EM8KCGgtZCIZAlN695W5rgDPvZKWmqLZEY=; b=O9/l2at5+x3QZIdQzhzFheUK0LEbG5HQdxTUwREQb7mE7CzTK4sgmf7jTng1QSOnoF W+5yElL/XgQlo3AdIoGz2s6fDKBfWZmr2xCpT1auE/LlTkpQwQPj2oGhQ+XHjvT0o/0W uRN6TrsC9Rl09vkfYWTNrW1K3LF586gHRYbMJw7dgP4QyV7ND/PRmDzr6qTSm1Y3QKaL u1OdUtysvBcb3EOwF+9yVp8qyEMc7HI2hP7IOlwACs0VUOFAZ0nkLoKf2Ky9cXISYA7y lqVSI2PY0z1Q74J3wG+jsXqMkhsJifxH6PeEePRxjseNYmVg2nxnVibsIahlLdHry6bt Zs+A== X-Gm-Message-State: AODbwcBCT7tygz1rV8fmNdvnld3QnvOolmcDm+a5CrWkXngoLE8lMc5P 01nBmgWQJPK1jKsX X-Received: by 10.98.33.84 with SMTP id h81mr32766163pfh.81.1496869667753; Wed, 07 Jun 2017 14:07:47 -0700 (PDT) Received: from localhost.localdomain (ip68-111-217-79.sd.sd.cox.net. [68.111.217.79]) by smtp.gmail.com with ESMTPSA id s131sm6564392pgs.6.2017.06.07.14.07.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2017 14:07:47 -0700 (PDT) From: Bjorn Andersson To: "David S. Miller" Cc: Arun Kumar Neelakantam , netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Courtney Cavin Subject: [RESEND PATCH 4/4] net: qrtr: Inform open sockets about new controller Date: Wed, 7 Jun 2017 14:07:39 -0700 Message-Id: <20170607210739.27263-5-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170607210739.27263-1-bjorn.andersson@linaro.org> References: <20170607210739.27263-1-bjorn.andersson@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org As the higher level communication only deals with "services" the a service directory is required to keep track of local and remote services. In order for qrtr clients to be informed about when the service directory implementation is available some event needs to be passed to them. Rather than introducing support for broadcasting such a message in-band to all open local sockets we flag each socket with ENETRESET, as there are no other expected operations that would benefit from having support from locally broadcasting messages. Cc: Courtney Cavin Signed-off-by: Bjorn Andersson --- net/qrtr/qrtr.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) -- 2.12.0 diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index d7516098b5aa..c7a5d861906b 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c @@ -530,6 +530,26 @@ static int qrtr_port_assign(struct qrtr_sock *ipc, int *port) return 0; } +/* Reset all non-control ports */ +static void qrtr_reset_ports(void) +{ + struct qrtr_sock *ipc; + int id; + + mutex_lock(&qrtr_port_lock); + idr_for_each_entry(&qrtr_ports, ipc, id) { + /* Don't reset control port */ + if (id == 0) + continue; + + sock_hold(&ipc->sk); + ipc->sk.sk_err = ENETRESET; + wake_up_interruptible(sk_sleep(&ipc->sk)); + sock_put(&ipc->sk); + } + mutex_unlock(&qrtr_port_lock); +} + /* Bind socket to address. * * Socket should be locked upon call. @@ -558,6 +578,10 @@ static int __qrtr_bind(struct socket *sock, sock_reset_flag(sk, SOCK_ZAPPED); + /* Notify all open ports about the new controller */ + if (port == QRTR_PORT_CTRL) + qrtr_reset_ports(); + return 0; }