From patchwork Wed Mar 6 08:42:11 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julian Anastasov X-Patchwork-Id: 225440 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 6FE4F2C0387 for ; Wed, 6 Mar 2013 19:42:17 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751025Ab3CFImM (ORCPT ); Wed, 6 Mar 2013 03:42:12 -0500 Received: from ja.ssi.bg ([178.16.129.10]:44779 "EHLO ja.ssi.bg" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751469Ab3CFImJ (ORCPT ); Wed, 6 Mar 2013 03:42:09 -0500 Received: from ja.ssi.bg (localhost.localdomain [127.0.0.1]) by ja.ssi.bg (8.14.4/8.14.4) with ESMTP id r268h06j018815; Wed, 6 Mar 2013 10:43:01 +0200 Received: (from root@localhost) by ja.ssi.bg (8.14.4/8.14.4/Submit) id r268h0ij018814; Wed, 6 Mar 2013 10:43:00 +0200 From: Julian Anastasov To: Simon Horman Cc: lvs-devel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH net-next 01/12] net: add dst_get_noref and refdst_ptr helpers Date: Wed, 6 Mar 2013 10:42:11 +0200 Message-Id: <1362559342-18784-2-git-send-email-ja@ssi.bg> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: <1362559342-18784-1-git-send-email-ja@ssi.bg> References: <1362559342-18784-1-git-send-email-ja@ssi.bg> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Needed to hide refdst details. Signed-off-by: Julian Anastasov --- include/net/dst.h | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/include/net/dst.h b/include/net/dst.h index 853cda1..967f42a 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -264,10 +264,22 @@ static inline struct dst_entry *dst_clone(struct dst_entry *dst) extern void dst_release(struct dst_entry *dst); +/* Get noref version of dst */ +static inline struct dst_entry *dst_get_noref(struct dst_entry *dst) +{ + return (struct dst_entry *) ((unsigned long) dst | SKB_DST_NOREF); +} + +/* Return dst pointer from refdst */ +static inline struct dst_entry *refdst_ptr(unsigned long refdst) +{ + return (struct dst_entry *)(refdst & SKB_DST_PTRMASK); +} + static inline void refdst_drop(unsigned long refdst) { if (!(refdst & SKB_DST_NOREF)) - dst_release((struct dst_entry *)(refdst & SKB_DST_PTRMASK)); + dst_release(refdst_ptr(refdst)); } /**