All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH_v4 0/4] ACFC and PFC options implementation
@ 2011-06-29  8:20 Guillaume Zajac
  2011-06-29  8:20 ` [PATCH_v4 1/4] GAtPPP: Add ACFC option support Guillaume Zajac
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Guillaume Zajac @ 2011-06-29  8:20 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 779 bytes --]

Hi,

Change log from v3:
	- Fix some style issues
	- update g_at_ppp_set_[acfc/pfc]_enabled() signatures
	- update lcp functions setting acfc/pfc options
	- we can now enable/disable ACFC or PFC to re-use the PPP object
	  with different parameters

Guillaume Zajac (4):
  GAtPPP: Add ACFC option support
  GAtPPP: Add PFC option support
  emulator: Activate ACFC and PFC options onto GAtPPP object
  gsmdial: Activate ACFC and PFC options on GAtPPP object

 gatchat/gatppp.c  |  155 +++++++++++++++++++++++++++++++++++++++++++++--------
 gatchat/gatppp.h  |    3 +
 gatchat/gsmdial.c |    3 +
 gatchat/ppp.h     |   12 ++++
 gatchat/ppp_lcp.c |   64 +++++++++++++++++++++-
 src/emulator.c    |    3 +
 6 files changed, 215 insertions(+), 25 deletions(-)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH_v4 1/4] GAtPPP: Add ACFC option support
  2011-06-29  8:20 [PATCH_v4 0/4] ACFC and PFC options implementation Guillaume Zajac
@ 2011-06-29  8:20 ` Guillaume Zajac
  2011-06-29  8:20 ` [PATCH_v4 2/4] GAtPPP: Add PFC " Guillaume Zajac
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Guillaume Zajac @ 2011-06-29  8:20 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 7766 bytes --]

---
 gatchat/gatppp.c  |   96 ++++++++++++++++++++++++++++++++++++++++-------------
 gatchat/gatppp.h  |    2 +
 gatchat/ppp.h     |    8 ++++
 gatchat/ppp_lcp.c |   35 +++++++++++++++++--
 4 files changed, 115 insertions(+), 26 deletions(-)

diff --git a/gatchat/gatppp.c b/gatchat/gatppp.c
index 5fb4146..42b3224 100644
--- a/gatchat/gatppp.c
+++ b/gatchat/gatppp.c
@@ -83,6 +83,7 @@ struct _GAtPPP {
 	int fd;
 	guint guard_timeout_source;
 	gboolean suspended;
+	gboolean xmit_acfc;
 };
 
 void ppp_debug(GAtPPP *ppp, const char *str)
@@ -168,8 +169,19 @@ static inline gboolean ppp_drop_packet(GAtPPP *ppp, guint16 protocol)
 static void ppp_receive(const unsigned char *buf, gsize len, void *data)
 {
 	GAtPPP *ppp = data;
-	guint16 protocol = ppp_proto(buf);
-	const guint8 *packet = ppp_info(buf);
+	struct ppp_header *header = (struct ppp_header *) buf;
+	gboolean acfc_frame = (header->address != PPP_ADDR_FIELD
+			|| header->control != PPP_CTRL);
+	guint16 protocol;
+	const guint8 *packet;
+
+	if (acfc_frame) {
+		protocol = ppp_acfc_proto(buf);
+		packet = ppp_acfc_info(buf);
+	} else {
+		protocol = ppp_proto(buf);
+		packet = ppp_info(buf);
+	}
 
 	if (ppp_drop_packet(ppp, protocol))
 		return;
@@ -196,37 +208,29 @@ static void ppp_receive(const unsigned char *buf, gsize len, void *data)
 	};
 }
 
-/*
- * transmit out through the lower layer interface
- *
- * infolen - length of the information part of the packet
- */
-void ppp_transmit(GAtPPP *ppp, guint8 *packet, guint infolen)
+static void ppp_send_lcp_frame(GAtPPP *ppp, guint8 *packet, guint infolen)
 {
 	struct ppp_header *header = (struct ppp_header *) packet;
-	guint16 proto = ppp_proto(packet);
 	guint8 code;
-	gboolean lcp = (proto == LCP_PROTOCOL);
 	guint32 xmit_accm = 0;
 	gboolean sta = FALSE;
+	gboolean lcp;
 
 	/*
 	 * all LCP Link Configuration, Link Termination, and Code-Reject
 	 * packets must be sent with the default sending ACCM
 	 */
-	if (lcp) {
-		code = pppcp_get_code(packet);
-		lcp = code > 0 && code < 8;
-
-		/*
-		 * If we're going down, we try to make sure to send the final
-		 * ack before informing the upper layers via the ppp_disconnect
-		 * function.  Once we enter PPP_DEAD phase, no further packets
-		 * will be sent
-		 */
-		if (code == PPPCP_CODE_TYPE_TERMINATE_ACK)
-			sta = TRUE;
-	}
+	code = pppcp_get_code(packet);
+	lcp = code > 0 && code < 8;
+
+	/*
+	 * If we're going down, we try to make sure to send the final
+	 * ack before informing the upper layers via the ppp_disconnect
+	 * function.  Once we enter PPP_DEAD phase, no further packets
+	 * will be sent
+	 */
+	if (code == PPPCP_CODE_TYPE_TERMINATE_ACK)
+		sta = TRUE;
 
 	if (lcp) {
 		xmit_accm = g_at_hdlc_get_xmit_accm(ppp->hdlc);
@@ -251,6 +255,42 @@ void ppp_transmit(GAtPPP *ppp, guint8 *packet, guint infolen)
 		g_at_hdlc_set_xmit_accm(ppp->hdlc, xmit_accm);
 }
 
+static void ppp_send_acfc_frame(GAtPPP *ppp, guint8 *packet,
+					guint infolen)
+{
+	struct ppp_header *header = (struct ppp_header *) packet;
+	guint offset = 0;
+
+	if (ppp->xmit_acfc)
+		offset = 2;
+
+	if (g_at_hdlc_send(ppp->hdlc, packet + offset,
+				infolen + sizeof(*header) - offset)
+			== FALSE)
+		DBG(ppp, "Failed to send a frame\n");
+}
+
+/*
+ * transmit out through the lower layer interface
+ *
+ * infolen - length of the information part of the packet
+ */
+void ppp_transmit(GAtPPP *ppp, guint8 *packet, guint infolen)
+{
+	guint16 proto = ppp_proto(packet);
+
+	switch (proto) {
+	case LCP_PROTOCOL:
+		ppp_send_lcp_frame(ppp, packet, infolen);
+		break;
+	case CHAP_PROTOCOL:
+	case IPCP_PROTO:
+	case PPP_IP_PROTO:
+		ppp_send_acfc_frame(ppp, packet, infolen);
+		break;
+	}
+}
+
 static inline void ppp_enter_phase(GAtPPP *ppp, enum ppp_phase phase)
 {
 	DBG(ppp, "%d", phase);
@@ -390,6 +430,11 @@ void ppp_set_mtu(GAtPPP *ppp, const guint8 *data)
 	ppp->mtu = mtu;
 }
 
+void ppp_set_xmit_acfc(GAtPPP *ppp, gboolean acfc)
+{
+	ppp->xmit_acfc = acfc;
+}
+
 static void io_disconnect(gpointer user_data)
 {
 	GAtPPP *ppp = user_data;
@@ -658,6 +703,11 @@ void g_at_ppp_set_server_info(GAtPPP *ppp, const char *remote,
 	ipcp_set_server_info(ppp->ipcp, r, d1, d2);
 }
 
+void g_at_ppp_set_acfc_enabled(GAtPPP *ppp, gboolean enabled)
+{
+	lcp_set_acfc_enabled(ppp->lcp, enabled);
+}
+
 static GAtPPP *ppp_init_common(gboolean is_server, guint32 ip)
 {
 	GAtPPP *ppp;
diff --git a/gatchat/gatppp.h b/gatchat/gatppp.h
index f0930a7..1544b31 100644
--- a/gatchat/gatppp.h
+++ b/gatchat/gatppp.h
@@ -79,6 +79,8 @@ void g_at_ppp_set_recording(GAtPPP *ppp, const char *filename);
 void g_at_ppp_set_server_info(GAtPPP *ppp, const char *remote_ip,
 				const char *dns1, const char *dns2);
 
+void g_at_ppp_set_acfc_enabled(GAtPPP *ppp, gboolean enabled);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/gatchat/ppp.h b/gatchat/ppp.h
index 023d779..41bcf7b 100644
--- a/gatchat/ppp.h
+++ b/gatchat/ppp.h
@@ -85,10 +85,17 @@ static inline void __put_unaligned_short(void *p, guint16 val)
 #define ppp_proto(packet) \
 	(get_host_short(packet + 2))
 
+#define ppp_acfc_info(packet) \
+	(packet + 2)
+
+#define ppp_acfc_proto(packet) \
+	(get_host_short(packet))
+
 /* LCP related functions */
 struct pppcp_data *lcp_new(GAtPPP *ppp, gboolean dormant);
 void lcp_free(struct pppcp_data *lcp);
 void lcp_protocol_reject(struct pppcp_data *lcp, guint8 *packet, gsize len);
+void lcp_set_acfc_enabled(struct pppcp_data *pppcp, gboolean enabled);
 
 /* IPCP related functions */
 struct pppcp_data *ipcp_new(GAtPPP *ppp, gboolean is_server, guint32 ip);
@@ -125,4 +132,5 @@ void ppp_lcp_finished_notify(GAtPPP *ppp);
 void ppp_set_recv_accm(GAtPPP *ppp, guint32 accm);
 void ppp_set_xmit_accm(GAtPPP *ppp, guint32 accm);
 void ppp_set_mtu(GAtPPP *ppp, const guint8 *data);
+void ppp_set_xmit_acfc(GAtPPP *ppp, gboolean acfc);
 struct ppp_header *ppp_packet_new(gsize infolen, guint16 protocol);
diff --git a/gatchat/ppp_lcp.c b/gatchat/ppp_lcp.c
index ce9dae2..c86a7d8 100644
--- a/gatchat/ppp_lcp.c
+++ b/gatchat/ppp_lcp.c
@@ -58,11 +58,12 @@ enum lcp_options {
 	ACFC			= 8,
 };
 
-/* Maximum size of all options, we only ever request ACCM and MRU */ 
-#define MAX_CONFIG_OPTION_SIZE 10
+/* Maximum size of all options, we only ever request ACCM, MRU and ACFC */
+#define MAX_CONFIG_OPTION_SIZE 12
 
 #define REQ_OPTION_ACCM	0x1
 #define REQ_OPTION_MRU	0x2
+#define REQ_OPTION_ACFC	0x4
 
 struct lcp_data {
 	guint8 options[MAX_CONFIG_OPTION_SIZE];
@@ -100,6 +101,13 @@ static void lcp_generate_config_options(struct lcp_data *lcp)
 		len += 4;
 	}
 
+	if (lcp->req_options & REQ_OPTION_ACFC) {
+		lcp->options[len] = ACFC;
+		lcp->options[len + 1] = 2;
+
+		len += 2;
+	}
+
 	lcp->options_len = len;
 }
 
@@ -286,9 +294,17 @@ static enum rcr_result lcp_rcr(struct pppcp_data *pppcp,
 			break;
 		case MAGIC_NUMBER:
 		case PFC:
-		case ACFC:
 			/* don't care */
 			break;
+		case ACFC:
+		{
+			struct lcp_data *lcp = pppcp_get_data(pppcp);
+
+			if (lcp->req_options & REQ_OPTION_ACFC)
+				ppp_set_xmit_acfc(ppp, TRUE);
+
+			break;
+		}
 		}
 	}
 
@@ -338,3 +354,16 @@ struct pppcp_data *lcp_new(GAtPPP *ppp, gboolean is_server)
 
 	return pppcp;
 }
+
+void lcp_set_acfc_enabled(struct pppcp_data *pppcp, gboolean enabled)
+{
+	struct lcp_data *lcp = pppcp_get_data(pppcp);
+
+	if (enabled == TRUE)
+		lcp->req_options |= REQ_OPTION_ACFC;
+	else
+		lcp->req_options &= ~REQ_OPTION_ACFC;
+
+	lcp_generate_config_options(lcp);
+	pppcp_set_local_options(pppcp, lcp->options, lcp->options_len);
+}
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH_v4 2/4] GAtPPP: Add PFC option support
  2011-06-29  8:20 [PATCH_v4 0/4] ACFC and PFC options implementation Guillaume Zajac
  2011-06-29  8:20 ` [PATCH_v4 1/4] GAtPPP: Add ACFC option support Guillaume Zajac
@ 2011-06-29  8:20 ` Guillaume Zajac
  2011-06-29  8:20 ` [PATCH_v4 3/4] emulator: Activate ACFC and PFC options onto GAtPPP object Guillaume Zajac
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Guillaume Zajac @ 2011-06-29  8:20 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 7047 bytes --]

---
 gatchat/gatppp.c  |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 gatchat/gatppp.h  |    1 +
 gatchat/ppp.h     |    4 +++
 gatchat/ppp_lcp.c |   35 +++++++++++++++++++++++++++--
 4 files changed, 99 insertions(+), 4 deletions(-)

diff --git a/gatchat/gatppp.c b/gatchat/gatppp.c
index 42b3224..919fd2f 100644
--- a/gatchat/gatppp.c
+++ b/gatchat/gatppp.c
@@ -84,6 +84,7 @@ struct _GAtPPP {
 	guint guard_timeout_source;
 	gboolean suspended;
 	gboolean xmit_acfc;
+	gboolean xmit_pfc;
 };
 
 void ppp_debug(GAtPPP *ppp, const char *str)
@@ -172,6 +173,7 @@ static void ppp_receive(const unsigned char *buf, gsize len, void *data)
 	struct ppp_header *header = (struct ppp_header *) buf;
 	gboolean acfc_frame = (header->address != PPP_ADDR_FIELD
 			|| header->control != PPP_CTRL);
+	gboolean pfc_frame = FALSE;
 	guint16 protocol;
 	const guint8 *packet;
 
@@ -183,6 +185,20 @@ static void ppp_receive(const unsigned char *buf, gsize len, void *data)
 		packet = ppp_info(buf);
 	}
 
+	pfc_frame = (protocol != LCP_PROTOCOL && protocol != CHAP_PROTOCOL &&
+			protocol != IPCP_PROTO && protocol != PPP_IP_PROTO);
+
+	if (pfc_frame) {
+		guint8 proto = (protocol >> 8) & 0xFF ;
+		packet = packet - 1;
+		/*
+		 * The only protocol that can be compressed is PPP_IP_PROTO
+		 * because first byte is 0x00.
+		 */
+		if (proto == PPP_IP_COMPRESSED_PROTO)
+			protocol = PPP_IP_PROTO;
+	}
+
 	if (ppp_drop_packet(ppp, protocol))
 		return;
 
@@ -264,6 +280,32 @@ static void ppp_send_acfc_frame(GAtPPP *ppp, guint8 *packet,
 	if (ppp->xmit_acfc)
 		offset = 2;
 
+	/* We remove the only address and control field */
+	if (g_at_hdlc_send(ppp->hdlc, packet + offset,
+				infolen + sizeof(*header) - offset)
+			== FALSE)
+		DBG(ppp, "Failed to send a frame\n");
+}
+
+static void ppp_send_acfc_pfc_frame(GAtPPP *ppp, guint8 *packet,
+					guint infolen)
+{
+	struct ppp_header *header = (struct ppp_header *) packet;
+	guint offset = 0;
+
+	if (ppp->xmit_acfc && ppp->xmit_pfc)
+		offset = 3;
+	else if (ppp->xmit_acfc)
+		offset = 2;
+	else if (ppp->xmit_pfc) {
+		/*
+		 * We remove only the 1st byte that is 0x00 of protocol field.
+		 */
+		packet[2] = packet[1];
+		packet[1] = packet[0];
+		offset = 1;
+	}
+
 	if (g_at_hdlc_send(ppp->hdlc, packet + offset,
 				infolen + sizeof(*header) - offset)
 			== FALSE)
@@ -285,9 +327,18 @@ void ppp_transmit(GAtPPP *ppp, guint8 *packet, guint infolen)
 		break;
 	case CHAP_PROTOCOL:
 	case IPCP_PROTO:
-	case PPP_IP_PROTO:
+		/*
+		 * We can't use PFC option because first byte of CHAP_PROTOCOL
+		 * and IPCP_PROTO is not equal to 0x00
+		 */
 		ppp_send_acfc_frame(ppp, packet, infolen);
 		break;
+	case PPP_IP_PROTO:
+		/*
+		 * We can't use both compression options if they are negotiated
+		 */
+		ppp_send_acfc_pfc_frame(ppp, packet, infolen);
+		break;
 	}
 }
 
@@ -435,6 +486,11 @@ void ppp_set_xmit_acfc(GAtPPP *ppp, gboolean acfc)
 	ppp->xmit_acfc = acfc;
 }
 
+void ppp_set_xmit_pfc(GAtPPP *ppp, gboolean pfc)
+{
+	ppp->xmit_pfc = pfc;
+}
+
 static void io_disconnect(gpointer user_data)
 {
 	GAtPPP *ppp = user_data;
@@ -708,6 +764,11 @@ void g_at_ppp_set_acfc_enabled(GAtPPP *ppp, gboolean enabled)
 	lcp_set_acfc_enabled(ppp->lcp, enabled);
 }
 
+void g_at_ppp_set_pfc_enabled(GAtPPP *ppp, gboolean enabled)
+{
+	lcp_set_pfc_enabled(ppp->lcp, enabled);
+}
+
 static GAtPPP *ppp_init_common(gboolean is_server, guint32 ip)
 {
 	GAtPPP *ppp;
diff --git a/gatchat/gatppp.h b/gatchat/gatppp.h
index 1544b31..fcaf3a9 100644
--- a/gatchat/gatppp.h
+++ b/gatchat/gatppp.h
@@ -80,6 +80,7 @@ void g_at_ppp_set_server_info(GAtPPP *ppp, const char *remote_ip,
 				const char *dns1, const char *dns2);
 
 void g_at_ppp_set_acfc_enabled(GAtPPP *ppp, gboolean enabled);
+void g_at_ppp_set_pfc_enabled(GAtPPP *ppp, gboolean enabled);
 
 #ifdef __cplusplus
 }
diff --git a/gatchat/ppp.h b/gatchat/ppp.h
index 41bcf7b..414d2df 100644
--- a/gatchat/ppp.h
+++ b/gatchat/ppp.h
@@ -27,6 +27,8 @@
 #define PPP_IP_PROTO	0x0021
 #define MD5		5
 
+#define PPP_IP_COMPRESSED_PROTO 0x21
+
 #define DBG(p, fmt, arg...) do {				\
 	char *str = g_strdup_printf("%s:%s() " fmt, __FILE__,	\
 					__FUNCTION__ , ## arg); \
@@ -96,6 +98,7 @@ struct pppcp_data *lcp_new(GAtPPP *ppp, gboolean dormant);
 void lcp_free(struct pppcp_data *lcp);
 void lcp_protocol_reject(struct pppcp_data *lcp, guint8 *packet, gsize len);
 void lcp_set_acfc_enabled(struct pppcp_data *pppcp, gboolean enabled);
+void lcp_set_pfc_enabled(struct pppcp_data *pppcp, gboolean enabled);
 
 /* IPCP related functions */
 struct pppcp_data *ipcp_new(GAtPPP *ppp, gboolean is_server, guint32 ip);
@@ -133,4 +136,5 @@ void ppp_set_recv_accm(GAtPPP *ppp, guint32 accm);
 void ppp_set_xmit_accm(GAtPPP *ppp, guint32 accm);
 void ppp_set_mtu(GAtPPP *ppp, const guint8 *data);
 void ppp_set_xmit_acfc(GAtPPP *ppp, gboolean acfc);
+void ppp_set_xmit_pfc(GAtPPP *ppp, gboolean pfc);
 struct ppp_header *ppp_packet_new(gsize infolen, guint16 protocol);
diff --git a/gatchat/ppp_lcp.c b/gatchat/ppp_lcp.c
index c86a7d8..01b36bf 100644
--- a/gatchat/ppp_lcp.c
+++ b/gatchat/ppp_lcp.c
@@ -58,12 +58,13 @@ enum lcp_options {
 	ACFC			= 8,
 };
 
-/* Maximum size of all options, we only ever request ACCM, MRU and ACFC */
-#define MAX_CONFIG_OPTION_SIZE 12
+/* Maximum size of all options, we only ever request ACCM, MRU, ACFC and PFC */
+#define MAX_CONFIG_OPTION_SIZE 14
 
 #define REQ_OPTION_ACCM	0x1
 #define REQ_OPTION_MRU	0x2
 #define REQ_OPTION_ACFC	0x4
+#define REQ_OPTION_PFC	0x8
 
 struct lcp_data {
 	guint8 options[MAX_CONFIG_OPTION_SIZE];
@@ -108,6 +109,13 @@ static void lcp_generate_config_options(struct lcp_data *lcp)
 		len += 2;
 	}
 
+	if (lcp->req_options & REQ_OPTION_PFC) {
+		lcp->options[len] = PFC;
+		lcp->options[len + 1] = 2;
+
+		len += 2;
+	}
+
 	lcp->options_len = len;
 }
 
@@ -293,9 +301,17 @@ static enum rcr_result lcp_rcr(struct pppcp_data *pppcp,
 			ppp_set_mtu(ppp, ppp_option_iter_get_data(&iter));
 			break;
 		case MAGIC_NUMBER:
-		case PFC:
 			/* don't care */
 			break;
+		case PFC:
+		{
+			struct lcp_data *lcp = pppcp_get_data(pppcp);
+
+			if (lcp->req_options & REQ_OPTION_PFC)
+				ppp_set_xmit_pfc(ppp, TRUE);
+
+			break;
+		}
 		case ACFC:
 		{
 			struct lcp_data *lcp = pppcp_get_data(pppcp);
@@ -367,3 +383,16 @@ void lcp_set_acfc_enabled(struct pppcp_data *pppcp, gboolean enabled)
 	lcp_generate_config_options(lcp);
 	pppcp_set_local_options(pppcp, lcp->options, lcp->options_len);
 }
+
+void lcp_set_pfc_enabled(struct pppcp_data *pppcp, gboolean enabled)
+{
+	struct lcp_data *lcp = pppcp_get_data(pppcp);
+
+	if (enabled == TRUE)
+		lcp->req_options |= REQ_OPTION_PFC;
+	else
+		lcp->req_options &= ~REQ_OPTION_PFC;
+
+	lcp_generate_config_options(lcp);
+	pppcp_set_local_options(pppcp, lcp->options, lcp->options_len);
+}
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH_v4 3/4] emulator: Activate ACFC and PFC options onto GAtPPP object
  2011-06-29  8:20 [PATCH_v4 0/4] ACFC and PFC options implementation Guillaume Zajac
  2011-06-29  8:20 ` [PATCH_v4 1/4] GAtPPP: Add ACFC option support Guillaume Zajac
  2011-06-29  8:20 ` [PATCH_v4 2/4] GAtPPP: Add PFC " Guillaume Zajac
@ 2011-06-29  8:20 ` Guillaume Zajac
  2011-06-29  8:20 ` [PATCH_v4 4/4] gsmdial: Activate ACFC and PFC options on " Guillaume Zajac
  2011-06-29 10:15 ` [PATCH_v4 0/4] ACFC and PFC options implementation Denis Kenzior
  4 siblings, 0 replies; 6+ messages in thread
From: Guillaume Zajac @ 2011-06-29  8:20 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 578 bytes --]

---
 src/emulator.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/emulator.c b/src/emulator.c
index 906404d..2e1300e 100644
--- a/src/emulator.c
+++ b/src/emulator.c
@@ -150,6 +150,9 @@ static void request_private_network_cb(
 	g_at_ppp_set_server_info(em->ppp, pns->peer_ip,
 					pns->primary_dns, pns->secondary_dns);
 
+	g_at_ppp_set_acfc_enabled(em->ppp, TRUE);
+	g_at_ppp_set_pfc_enabled(em->ppp, TRUE);
+
 	g_at_ppp_set_credentials(em->ppp, "", "");
 	g_at_ppp_set_debug(em->ppp, emulator_debug, "PPP");
 
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH_v4 4/4] gsmdial: Activate ACFC and PFC options on GAtPPP object
  2011-06-29  8:20 [PATCH_v4 0/4] ACFC and PFC options implementation Guillaume Zajac
                   ` (2 preceding siblings ...)
  2011-06-29  8:20 ` [PATCH_v4 3/4] emulator: Activate ACFC and PFC options onto GAtPPP object Guillaume Zajac
@ 2011-06-29  8:20 ` Guillaume Zajac
  2011-06-29 10:15 ` [PATCH_v4 0/4] ACFC and PFC options implementation Denis Kenzior
  4 siblings, 0 replies; 6+ messages in thread
From: Guillaume Zajac @ 2011-06-29  8:20 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 658 bytes --]

---
 gatchat/gsmdial.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/gatchat/gsmdial.c b/gatchat/gsmdial.c
index 1116984..f0b4492 100644
--- a/gatchat/gsmdial.c
+++ b/gatchat/gsmdial.c
@@ -372,6 +372,9 @@ static void connect_cb(gboolean ok, GAtResult *result, gpointer user_data)
 
 	g_at_ppp_set_credentials(ppp, option_username, option_password);
 
+	g_at_ppp_set_acfc_enabled(ppp, TRUE);
+	g_at_ppp_set_pfc_enabled(ppp, TRUE);
+
 	/* set connect and disconnect callbacks */
 	g_at_ppp_set_connect_function(ppp, ppp_connect, NULL);
 	g_at_ppp_set_disconnect_function(ppp, ppp_disconnect, NULL);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH_v4 0/4] ACFC and PFC options implementation
  2011-06-29  8:20 [PATCH_v4 0/4] ACFC and PFC options implementation Guillaume Zajac
                   ` (3 preceding siblings ...)
  2011-06-29  8:20 ` [PATCH_v4 4/4] gsmdial: Activate ACFC and PFC options on " Guillaume Zajac
@ 2011-06-29 10:15 ` Denis Kenzior
  4 siblings, 0 replies; 6+ messages in thread
From: Denis Kenzior @ 2011-06-29 10:15 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1201 bytes --]

Hi Guillaume,

On 06/29/2011 03:20 AM, Guillaume Zajac wrote:
> Hi,
> 
> Change log from v3:
> 	- Fix some style issues
> 	- update g_at_ppp_set_[acfc/pfc]_enabled() signatures
> 	- update lcp functions setting acfc/pfc options
> 	- we can now enable/disable ACFC or PFC to re-use the PPP object
> 	  with different parameters
> 
> Guillaume Zajac (4):
>   GAtPPP: Add ACFC option support
>   GAtPPP: Add PFC option support
>   emulator: Activate ACFC and PFC options onto GAtPPP object
>   gsmdial: Activate ACFC and PFC options on GAtPPP object
> 
>  gatchat/gatppp.c  |  155 +++++++++++++++++++++++++++++++++++++++++++++--------
>  gatchat/gatppp.h  |    3 +
>  gatchat/gsmdial.c |    3 +
>  gatchat/ppp.h     |   12 ++++
>  gatchat/ppp_lcp.c |   64 +++++++++++++++++++++-
>  src/emulator.c    |    3 +
>  6 files changed, 215 insertions(+), 25 deletions(-)
> 

I went ahead and applied all four patches, thanks.  I did do some minor
refactoring afterwards to optimize the rx & tx flow.  In my testing
everything seems to be working fine, but please stress test it again to
make sure.

I also went ahead and marked the PFC & ACFC tasks as done.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-06-29 10:15 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-29  8:20 [PATCH_v4 0/4] ACFC and PFC options implementation Guillaume Zajac
2011-06-29  8:20 ` [PATCH_v4 1/4] GAtPPP: Add ACFC option support Guillaume Zajac
2011-06-29  8:20 ` [PATCH_v4 2/4] GAtPPP: Add PFC " Guillaume Zajac
2011-06-29  8:20 ` [PATCH_v4 3/4] emulator: Activate ACFC and PFC options onto GAtPPP object Guillaume Zajac
2011-06-29  8:20 ` [PATCH_v4 4/4] gsmdial: Activate ACFC and PFC options on " Guillaume Zajac
2011-06-29 10:15 ` [PATCH_v4 0/4] ACFC and PFC options implementation Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.